![]() |
|
دلفي 2010 والدعم المحسن لل rtti - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : دلفي للعرب - القسم العام (https://delphi4arab.net/forum/forumdisplay.php?fid=10) +--- الموضوع : دلفي 2010 والدعم المحسن لل rtti (/showthread.php?tid=2524) |
دلفي 2010 والدعم المحسن لل rtti - محمد نسمان - 24-10-2010 نسخة دلفي 2010 كانت بها تحسينات على المترجم تعتبر الأكبر منذ نسخة دلفي 2 ودلفي 2009، حيث طالت تلك النسخة دعم كبير للغة دلفي على مستوى المترجم وليس فقط تحسينات لبيئة التطوير والمكونات الموجودة. اليوم أمضيت بعض الوقت للبدء في تعلم ال Extended RTTI (Real Time Type Information التي أضيفت لدلفي، ورغم أن دلفي ومنذ بدايته كان به دعم جيد نوعاً ما لل RTTI، لكنه هذه الدعم كان محصور ضمن البيانات والطرق المعرفة ضمن جزء ال Published في أي صنف، وأيضا لم يكن على مستوى عالي مثل الموجود في الجافا ولغات الدوت نت في حيث ما يعرف ب Reflection. لكن مع دلفي 2010 تم زيادة هذا الدعم تحت مسمى Extended RTTI، بحيث أصبح بالإمكان التعامل مع جميع محتويات الصنف وليس ال Published فقط، ومع إضافة دعم ال Attributes للغة دلفي، أصبح بالإمكان الوصول للعديد من المميزات الموجودة في دوت نت وجافا ولكن بدون تضييع مستوى الآمان، حيث لا يمكن إرجاع الكود إلى أصله، وأيضاً يمكن توقيف توليد هذه المعلومات. يمكن الإطلاع على وحدة rtti.pas التي أضيفت إلى دلفي 2010 وبها TRTTIContext الذي يعتبر قلب التعامل مع ال RTTI، ورغم بساطته لكن يعتبر نقطة البداية في التعامل مع أي صنف من خلال ال RTTI. سوف أتطرق اليوم لمثال بسيط، حيث سوف أقوم بتعريف صنف جديد TStudClass ومن ثم سوف أقوم بعرض جميع مع يحتويه هذا الصنف من خلال ال RTTI المحسن. PHP كود : {*******************************************************}والنتيجة تكون بالشكل التالي: عندما يتم طباعة مثلا P.ToString أو F.ToString فإنه سوف عرض البيانات الخاصة بالحقل أو الخاصية بالإضافة إلى موقعها في الذاكرة بالنسبة للصنف، لذا فقد قمت بكتابة دالة صغيرة لعرض البيانات بشكل أوضح وهي GetFormattedType، ويمكن رفعها لرؤية الفرق في الناتج. أيضاً من الملاحظ أنني لم أقم سوف بكتابة Method واحدة ضمن الصنف، لكن تم عرض الكثير منها والتي هي موروثة من الصنف الأب TObject، لذا فبعد قليل من التمحيص ضمن TRTTIMethod وجدت أن ال Parent الخاص يرجع الصنف الأب لل Method التي داخل التكرار، لذا فلو قمنا بفحصها مع النوع الراجع من TRttiContext فهكذا نضمن بأن ال Methods هي تابعة للصنف المراد عرض بياناته فقط، ويصبح جزئية عرضة ال Methods كالتالي: PHP كود : Writeln('============ Listing all Methods of Class:',TStudClass.ClassName);وتظهر النتجة الآن بشكل صحيح هكذا: يمكن الحصول أيضاً على معلومات أخرى مثل ال Attributes لكن هذه تحتاج إلى موضوع آخر في الفترة القادمة إن شاء الله. وإلى لقاء آخر بأذن الله ======= من مدونتي كود : http://www.mnasman.com/blog/?p=278دلفي 2010 والدعم المحسن لل rtti - khiro.alg - 30-10-2010 عمل رهيب بارك الله فيك أخي محمد جاري المراجعة.. دلفي 2010 والدعم المحسن لل rtti - TF6M - 30-10-2010 بارك الله فيك أخي محمد , يعني ننسى دلفي 7 ؟؟بالتوفيق,, دلفي 2010 والدعم المحسن لل rtti - محمد نسمان - 31-10-2010 إقتباس :بارك الله فيك أخي محمد , يعني ننسى دلفي 7 ؟؟ من وجهة نظري يجب أن تنساه، دلفي 2010 بصراحة قمة في الإنتاجية وهناك المئات من المميزات التي إن تتعود عليها لن تستطيع الرجوع إلى دلفي 7 تماماً مثلاً تتعود على ويندوز 7 ولا تستطيع الرجوع لويندوز إكس بي، رغم أن من أفضل نظم التشغيل التي عملت عليها .
|