سلام
دوستان من برنامه اي دارم كه كمي گسترده است وقتي زياد از ADOtable استفاده ميشه حافظه كم مياره بنابر اين ميخوام قبل از باز كردن هر ADO حافظه رو خالي كنم تا جابراي بقيه اطلاعات بانك بشه
Printable View
سلام
دوستان من برنامه اي دارم كه كمي گسترده است وقتي زياد از ADOtable استفاده ميشه حافظه كم مياره بنابر اين ميخوام قبل از باز كردن هر ADO حافظه رو خالي كنم تا جابراي بقيه اطلاعات بانك بشه
سلام به جای اینکه از Adotable استفاده کنی از Adodataset یا AdoQuery کن این جوری تمامی فیلد ها و مقادیر اونها به حافظه میاد دیگ0
من از AdoQuery دارم استفاده میکنم ولی بازم حافظه کم اورد دوست عزیز راست میگه
اصلا مگه حافظه پیش فرض چقدره ؟
نمیشه زیادش کرد ؟
عجب سوالی
بای
نقل قول:
وقتي زياد از ADOtable استفاده ميشه حافظه كم مياره بنابر اين ميخوام قبل از باز كردن هر ADO حافظه رو خالي كنم تا جابراي بقيه اطلاعات بانك بشه
لطفا دقیق تر بگید منظورتون چیه که حافظه کم میاره! چه اتفاقی میفته که شما فکر میکنید به خاطر حافظه هست؟نقل قول:
من از AdoQuery دارم استفاده میکنم ولی بازم حافظه کم اورد دوست عزیز راست میگه
روشی رو که delphianddotnet عزیز گفته خوبه اما اگر مجبورید که از adotable استفاده کنید، بهتره کارتون که با table تمام شد، جدول رو close کنید
موقعي كه نياز به يه تيبل داري اونو باز كن و بلافاصله بعدش ببند. دقيقا مطابق حرفي كه فرهاد جان گفت.
ولي مسئله اصلي اينه كه خيلي بعيده به خاطر تعداد ADOTable شما حافظه كم بياري. به نظر من مشكلت يه جاي ديگس.
این بستگی به ساختار جداول و نوع دیتا هایی ک در اون ذخیره میکنی داره و در ضمن در هر بار که عملیاتی مثل نمایش رکورد ها در دبی گرید رو انجام میدهید خوب نباید همه فیلد هاتونو به کاربر نمایش بدهیدنقل قول:
موقعي كه نياز به يه تيبل داري اونو باز كن و بلافاصله بعدش ببند. دقيقا مطابق حرفي كه فرهاد جان گفت.
ولي مسئله اصلي اينه كه خيلي بعيده به خاطر تعداد ADOTable شما حافظه كم بياري. به نظر من مشكلت يه جاي ديگس.
Select * from tablename
کد بالا بدترین حالت مکن برای Fetch کردن رکورد هاست
همون طور که مرد مباح گفت پس از پایان کار دیتا ست هاتو ببند
من توی دیتا ماژول حدودا 30 تا AdoQuery قرار دادم
وقتی توی برنامه ام میخوام دیتا ماژول را فراخوانی کنم پیغام خطلا می اومد که منظورش این بود فضا نداری
وقتی چند تا از AdoQuery را پاک کردم مشکلم بر طرف شد
همین منظورم بود
مطمئنا برنامه شما از 30 تا دیتابیس استفاده نمیکنه! برای هر دیتابیس یک adoconnection وجود داره، پس اگر دیتابیس دارای 50 جدول هم باشه شما با استفاده از یک AdoQuery هم میتونی به تمام جدولها دسترسی داشته باشی.نقل قول:
من توی دیتا ماژول حدودا 30 تا AdoQuery قرار دادم
در ساختار برنامه ای که نوشتی باید تغییراتی بدی، چون استفاده از 30 تا query عجیبه.
موفق باشی
چیش عجیبه ؟نقل قول:
در ساختار برنامه ای که نوشتی باید تغییراتی بدی، چون استفاده از 30 تا query عجیبه.
من حتی 30 به بالا رو امتحان کردم و هیچ جای نگرانی نیست.
فقط تنها تو صیه ای که میکم اینه که Active همه Query هاتو False کنی و تو قسمتی که کوری رو اجرا میکنی Open و در پایان کار Close کن
این که میتونه با استفاده از یک query اطلاعات 300000 جدول رو بازیابی کنه!نقل قول:
چیش عجیبه ؟