![]() |
|
Vcl Style Memory Overflow Fix - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : دلفي للعرب - القسم العام (https://delphi4arab.net/forum/forumdisplay.php?fid=10) +--- الموضوع : Vcl Style Memory Overflow Fix (/showthread.php?tid=5527) |
Vcl Style Memory Overflow Fix - SMP3 - 06-09-2013 السلام عليكم و رحمة الله و بركاته ------------------------------------------------ عند استخدام مكتبة ال Vcl Style و تغيير الستايل وقت التنفيذ .. تبين أنه هناك زيادة في الذاكرة المستخدمة من قبل التطبيق - للأمانة لست من اكتشف المشكلة : ( لقد اكتشفها الأخ onexite ) - على كل حال بدأت فور علمي بالمشكلة بمحاولة لحلها : أول المحاولات كانت فاشلة تماما ثم بعد ربع ساعة وجدت أن المشكلة تكمن في اجراء TStyleManager.SetStyle : عند تغيير شكل البرنامج لا يتم تحرير الستايل السابق , حتى ولو قمت بتحريره يدويا كما فعل الأخ onexite .. PHP كود : procedure freestyles();بعد معرفتي للسبب أعدت كتابة الدالة SetStyle و قمت بتحرير ال Data الخاصة بالستايل :لقد اشتغلت على أكمل وجه , لكن في نهاية المطاف تبين أنه يوجد MemoryLeaks و التي أخذت مني ثلاث ساعات لحلها !! عندما قررا و ضع الموضوع ظهرت مشكلة أخرى : عند استخدام الخاصية Style الخاصة بال StyleManager للقراءة ..تحدث نفس المشكلة : زيادة في حجم الذاكرة المستخدمة للتطبيق .. على كل حال بفضل من الله استطعت تجاوز هذه المشكلة لقد كتبت كلاس مساعد لل TStyleManager يقوم بتصحيح هذه المشاكل : يحتوي الكلاس على الدالة SetStyle معدلة تعمل بدون خلق زيادة في الذاكرة .. لكنها بطيئة نوعا ما لتغيير الواجهة , لهذا السبب بدأت بالتحليل مرة أحرى و وجدت طريقة أفضل الدالة SafeSetStyle . الدالة SafeSetStyle : دالة تسمح بتغيير الستايل بدون زيادة في حجم الذاكرة .. + أعدت كتابة الروتين الخاص بالخاصية Style : الآن تستطيع الوصول للخاصية بدون الخوف من مشاكل الزيادة في الذاكرة أو Memory Overflow . ------------------------------------------------------------------ الآن لحل كل هذه المشاكل يتوجب عليك اضافة الوحدة uFixMemOverflowVclStyle الى مشروعك فقط !! يستحسن أن تضيفها بعد الوحدتين : Vcl.Styles, Vcl.Themes PHP كود : usesحمل المرفق من هنا : كود : https://dl.dropboxusercontent.com/u/99625333/Delphi/Vcl%20Style_Memory_Overflow_Fix.rarVcl Style Memory Overflow Fix - onexite - 09-09-2013 عمل ممتاز بخصوص التحميل من القرص ؟ الا يوجد شيء من هذا القبيل PHP كود : StyleManager.SafeSetStyle(StyleManager.LoadFromFile(filename)); Vcl Style Memory Overflow Fix - SMP3 - 09-09-2013 التحديث : +اضافة دالة جديدة : الدالة SafeSetStyleFromFile لتحميل ملف من القرص الصلب تمرر للدالة برمتر بمسار الملف كاملا .. PHP كود : https://dl.dropboxusercontent.com/u/99625333/Delphi/uFixMemOverflowVclStyle.pas Vcl Style Memory Overflow Fix - onexite - 09-09-2013 smp3 كتب :[color=blue]التحديث :تعمل جيدا ... شكرا لك |