View Full Version : به روز رساني لحظه اي و سريع داده ها
Zahed2008
سه شنبه 10 شهریور 1388, 13:52 عصر
سلام، من يه سري داده ها رو با TFileStream ذخيره مي كنم و لازمه كه لحظه به لحظه با كوچكترين تغيير به روز بشه. به نظر شما بهترين روش چيه كه برنامه كند نشه؟
لازمه بگم كه حجم داده ها خيلي بالاست و ذخيره كل داده ها در يك فايل زمانبر خواهد شد.
tdkhakpur
سه شنبه 10 شهریور 1388, 14:21 عصر
سلام، من يه سري داده ها رو با TFileStream ذخيره مي كنم و لازمه كه لحظه به لحظه با كوچكترين تغيير به روز بشه. به نظر شما بهترين روش چيه كه برنامه كند نشه؟
لازمه بگم كه حجم داده ها خيلي بالاست و ذخيره كل داده ها در يك فايل زمانبر خواهد شد.
داده ای را که وارد میکنید از چه نوعیه؟
سوای از نوع داده این کار به تک کاربره یا چند کاربره بودن هم ارتباط دارد.
اگر چند کاربره هست بهترین روش- ذخیره آن دریک منبع اشتراکی یا همان فایل است ولی اگر تک کاربره باشد از TMemoryStream برای اینکار استفاده کنید.
Zahed2008
سه شنبه 10 شهریور 1388, 14:37 عصر
نوع برنامه تك كاربره هستش و داده ها يك آرايه اي از چند ركورد خاص تعريف شده در برنامه (ادغامي از Variant, ShortString, integer). حجم داده ها حدود 50 مگابايت مي شه. مي خواستم روشي باشه كه لازم نباشه همه داده ها يه دفعه ذخيره بشه. فقط اوني كه تغيير كرده رو پيدا و به روز كنم. اگه كدي يا لينكي بذاريد، ممنون مي شم.
tdkhakpur
سه شنبه 10 شهریور 1388, 14:54 عصر
نوع برنامه تك كاربره هستش و داده ها يك آرايه اي از چند ركورد خاص تعريف شده در برنامه (ادغامي از Variant, ShortString, integer). حجم داده ها حدود 50 مگابايت مي شه. مي خواستم روشي باشه كه لازم نباشه همه داده ها يه دفعه ذخيره بشه. فقط اوني كه تغيير كرده رو پيدا و به روز كنم. اگه كدي يا لينكي بذاريد، ممنون مي شم.
من به این سول لینکی برای دریافت جواب برای شما ندارم خوب شما دارید برنامه مینویسید ابزار که نیست امیدوارم دوستان جوابی برای شما داشته باشند.
ولی از من بخوای از کلاس TMemoryStream استفاده کنید این کلاس مخلوطی از Ramو فایل برای ذخیره سازی استفاده میکند این بستگی به شما دارد که چه زمانی داده ها را در فایل ذخیره کنید.
vcldeveloper
سه شنبه 10 شهریور 1388, 18:19 عصر
از من بخوای از کلاس TMemoryStream استفاده کنید این کلاس مخلوطی از Ramو فایل برای ذخیره سازی استفاده میکند
TMemoryStream فقط از RAM استفاده میکنه، و استفاده ایی از فایل نمیکنه. کاربر فقط میتونه داده های موجود در RAM را با SaveToFile در یک فایل ذخیره کنه، یا با استفاده از LoadFromFile از یک فایل بخونه، نه اینکه استفاده ترکیبی بکنه.
سلام، من يه سري داده ها رو با TFileStream ذخيره مي كنم و لازمه كه لحظه به لحظه با كوچكترين تغيير به روز بشه. به نظر شما بهترين روش چيه كه برنامه كند نشه؟
لازمه بگم كه حجم داده ها خيلي بالاست و ذخيره كل داده ها در يك فايل زمانبر خواهد شد.
بستگی داره که آیا لازم هست شما داده ها را بلافاصله در فایل ذخیره کنید یا نه. اگر نیست، یک راه این هست که شما یک بافر داشته باشید که داده ها را در RAM دریافت میکنه، و هر وقت حجم داده ها به مقدار مشخصی رسید، یک روتین دیگه که میتونه در یک Thread دیگه در حال اجرا باشه، بخشی از بافر را در فایل ذخیره کنه، و آن بخش را از بافر حذف کنه، تا هم مصرف RAM بیش از حد زیاد نشه، هم برای هر داده دریافتی مجبور نباشید در فایل بنویسید. برای بافر هم می تونید از همین TMemoryStream یا یک آرایه دینامیک از Byte یا هر چیز دیگه که دوست داشتید، استفاده کنید.
tdkhakpur
پنج شنبه 12 شهریور 1388, 15:32 عصر
TMemoryStream فقط از RAM استفاده میکنه، و استفاده ایی از فایل نمیکنه. کاربر فقط میتونه داده های موجود در RAM را با SaveToFile در یک فایل ذخیره کنه، یا با استفاده از LoadFromFile از یک فایل بخونه، نه اینکه استفاده ترکیبی بکنه.
بستگی داره که آیا لازم هست شما داده ها را بلافاصله در فایل ذخیره کنید یا نه.
خوب منظور ما هم همین بود که اگر داده هاحجم زیادی داشته باشند این امکان وجود دارد که قسمتی از هارد به عنوان فایل مجازی به داد این ابزار برود.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.