السلام عليكم ورحمة الله
"دلفي لا يملك Garbage Collector" عبارة نسمعها أحيانا كثيرة...
ممن ينتقد دلفي وممن يثني عليه أحيانا!
لماذا؟
لأن من ينتقد دلفي يدعي أن ذلك نقطة ضعف فيه، لأن GC (اختصارا) يسهل البرمجة بتقليص الأسطر، وإراحة المبرمج من تحرير يدوي للمكونات وغير ذلك...
ومن يمدح دلفي بذلك يدعي أن ذلك يقيد من حركة المبرمج وتحريره لأغراضه يدويا يجعله يتحكم في الكود أكثر...
بغض النظر عما إذا كان ذلك بعاطفة من محبي دلفي أو بغيرها، أو هل هناك حاجة لـ GC أم لا...
السؤال: هل يمكن برمجة Garbage Collector؟
...أولا ماذا تقصد بـ Garbage Collector؟
باختصار... جامع القمامة (Garbage Collector) هو كائن يقوم بتسيير الذاكرة بحيث يقوم عند إنهاء البرنامج بتحرير المساحات المحجوزة -لإنشاء الأغراض- بشكل تلقائي.
بعبارة أخرى لست بحاجة إلى تحرير الأنماط التي تقوم بإنشائها:
وبالتالي تتخلص من احتمال حصول أي استنزاف مفرط في الذاكرة!
طالع: من Wikipedia Garbage Collector
الجواب:
- طبعا، يمكن برمجة ذلك، كما يمكن برمجة أي شيء بدلفي
هناك محاولات جيدة قام البعض بها:
السورس مرفق في مثال (دلفي 2006 فما فوق)، أيضا:
API for Boehm Garbage Collector DLL: مكتبة DLL أصلها مكتوبة بـ C ومثال لاستخدام بدلفي
بالتوفيق.
"دلفي لا يملك Garbage Collector" عبارة نسمعها أحيانا كثيرة...
ممن ينتقد دلفي وممن يثني عليه أحيانا!
لماذا؟
لأن من ينتقد دلفي يدعي أن ذلك نقطة ضعف فيه، لأن GC (اختصارا) يسهل البرمجة بتقليص الأسطر، وإراحة المبرمج من تحرير يدوي للمكونات وغير ذلك...
ومن يمدح دلفي بذلك يدعي أن ذلك يقيد من حركة المبرمج وتحريره لأغراضه يدويا يجعله يتحكم في الكود أكثر...
بغض النظر عما إذا كان ذلك بعاطفة من محبي دلفي أو بغيرها، أو هل هناك حاجة لـ GC أم لا...
السؤال: هل يمكن برمجة Garbage Collector؟
...أولا ماذا تقصد بـ Garbage Collector؟
باختصار... جامع القمامة (Garbage Collector) هو كائن يقوم بتسيير الذاكرة بحيث يقوم عند إنهاء البرنامج بتحرير المساحات المحجوزة -لإنشاء الأغراض- بشكل تلقائي.
بعبارة أخرى لست بحاجة إلى تحرير الأنماط التي تقوم بإنشائها:
PHP كود :
//try
MyObject := TObject.Create;
//finally
// MyObject.Free;
//end;
طالع: من Wikipedia Garbage Collector
الجواب:
- طبعا، يمكن برمجة ذلك، كما يمكن برمجة أي شيء بدلفي

هناك محاولات جيدة قام البعض بها:
كود :
http://edn.embarcadero.com/article/28217API for Boehm Garbage Collector DLL: مكتبة DLL أصلها مكتوبة بـ C ومثال لاستخدام بدلفي
كود :
http://cc.embarcadero.com/item/21646
