27-01-2026, 06:50 PM
السلام عليكم ورحمة الله
من الاشياء الجديدة في دلفي الحديث والتي ارتحت لها هي ما يسمى Class Methods فمثلا لدينا هذه الفئة
سابقا كان لابد من اشتقاق نسخة من هذه الفئة عن طريق Greate وايضا يجب تحريرها بي Free
الان يمكننا ببساطة استخدام الدالة
ببساطة، هي دوال تنتمي إلى الفئة (Class) نفسها وليس إلى كائن (Object) محدد مشتق منها.
شرح تقنية Class Methods
في الحالة العادية، تحتاج لإنشاء نسخة من الكائن في الذاكرة باستخدام Create لتتمكن من الوصول لخصائصه، لكن مع class function:
لا حاجة لـ Create: يمكنك استدعاء الدالة مباشرة باستخدام اسم الفئة: TCryptoHelper.DecryptAES.
توفير الذاكرة: بما أنك لا تشتق كائناً جديداً، فأنت لا تستهلك مساحة في الذاكرة ولا تحتاج للقلق بشأن تحريرها (Free).
التنظيم: تُستخدم غالباً في الدوال "المساعدة" (Utility/Helper functions) التي تؤدي مهمة محددة ولا تعتمد على بيانات متغيرة داخل الكائن.
لماذا نستخدمها؟ (حالات الاستخدام)
المكتبات البرمجية (Utility Libraries): مثل مثال التشفير الذي ذكرته، أو معالجة النصوص، حيث تريد فقط تمرير مدخلات والحصول على مخرجات.
نمط المصنع (Factory Pattern): لإنشاء كائنات معقدة وإرجاعها جاهزة.
العدّادات (Counters): لمتابعة عدد المرات التي تم فيها استدعاء ميزة معينة عبر البرنامج بالكامل.
نصيحة برمجية
في إصدارات دلفي الحديثة، يمكنك أيضاً استخدام ما يسمى Class Helpers أو Records مع طرق (Methods) لتنظيم الكود بشكل أكبر دون الحاجة لتعريف فئة كاملة إذا كانت المهمة بسيطة.
ملاحظة: في مثالك الخاص بالتشفير، استخدام class function هو الخيار الأمثل (Best Practice) لأنه يجعل الكود نظيفاً جداً وقابل للقراءة كأنه نص لغوي: "يا فئة التشفير، فكي شفرة هذا النص".
من الاشياء الجديدة في دلفي الحديث والتي ارتحت لها هي ما يسمى Class Methods فمثلا لدينا هذه الفئة
كود :
type
TCryptoHelper = class
public
class function DecryptAES(const EncryptedBase64: String; const KeyStr, IVStr: String): String;
end;
implementation
class function TCryptoHelper.DecryptAES(const EncryptedBase64: String; const KeyStr, IVStr: String): String;
Begin
// code here
end;سابقا كان لابد من اشتقاق نسخة من هذه الفئة عن طريق Greate وايضا يجب تحريرها بي Free
الان يمكننا ببساطة استخدام الدالة
كود :
TCryptoHelper.DecryptAESببساطة، هي دوال تنتمي إلى الفئة (Class) نفسها وليس إلى كائن (Object) محدد مشتق منها.
شرح تقنية Class Methods
في الحالة العادية، تحتاج لإنشاء نسخة من الكائن في الذاكرة باستخدام Create لتتمكن من الوصول لخصائصه، لكن مع class function:
لا حاجة لـ Create: يمكنك استدعاء الدالة مباشرة باستخدام اسم الفئة: TCryptoHelper.DecryptAES.
توفير الذاكرة: بما أنك لا تشتق كائناً جديداً، فأنت لا تستهلك مساحة في الذاكرة ولا تحتاج للقلق بشأن تحريرها (Free).
التنظيم: تُستخدم غالباً في الدوال "المساعدة" (Utility/Helper functions) التي تؤدي مهمة محددة ولا تعتمد على بيانات متغيرة داخل الكائن.
لماذا نستخدمها؟ (حالات الاستخدام)
المكتبات البرمجية (Utility Libraries): مثل مثال التشفير الذي ذكرته، أو معالجة النصوص، حيث تريد فقط تمرير مدخلات والحصول على مخرجات.
نمط المصنع (Factory Pattern): لإنشاء كائنات معقدة وإرجاعها جاهزة.
العدّادات (Counters): لمتابعة عدد المرات التي تم فيها استدعاء ميزة معينة عبر البرنامج بالكامل.
نصيحة برمجية
في إصدارات دلفي الحديثة، يمكنك أيضاً استخدام ما يسمى Class Helpers أو Records مع طرق (Methods) لتنظيم الكود بشكل أكبر دون الحاجة لتعريف فئة كاملة إذا كانت المهمة بسيطة.
ملاحظة: في مثالك الخاص بالتشفير، استخدام class function هو الخيار الأمثل (Best Practice) لأنه يجعل الكود نظيفاً جداً وقابل للقراءة كأنه نص لغوي: "يا فئة التشفير، فكي شفرة هذا النص".
إذا رأيت منتجاً مجانياً فأعلم بأنك أنت السّلعة


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)