فهم الثوابت المكتوبة في دلفي

click fraud protection

متى دلفي تستدعي معالج حدث ، يتم محو القيم القديمة للمتغيرات المحلية. ماذا لو أردنا تتبع عدد مرات النقر على الزر؟ يمكن أن تستمر القيم باستخدام متغير على مستوى الوحدة ، ولكن من الجيد عمومًا حجز المتغيرات على مستوى الوحدة فقط لتبادل المعلومات. ما نحتاجه عادة ما يسمى المتغيرات الثابتة أو الثوابت المكتوبة في دلفي.

متغير أو ثابت

يمكن مقارنة الثوابت المكتوبة مع المتغيرات الأولية - المتغيرات التي يتم تحديد قيمها عند الدخول إلى كتلها (عادة معالج الأحداث). تتم تهيئة هذا المتغير فقط عندما يبدأ تشغيل البرنامج. بعد ذلك ، تستمر قيمة الثابت المكتوب بين المكالمات المتتالية لإجراءاتها.

يعد استخدام الثوابت المكتوبة طريقة نظيفة جدًا لتنفيذ المتغيرات التي تمت تهيئتها تلقائيًا. لتنفيذ هذه المتغيرات بدون ثوابت مكتوبة ، سنحتاج إلى إنشاء قسم التهيئة الذي يحدد قيمة كل متغير تمت تهيئته.

ثوابت من النوع المتغير

على الرغم من أننا نعلن ثوابت مكتوبة في قسم ثوابت الإجراء ، من المهم أن نتذكر أنها ليست ثوابت. في أي وقت في تطبيقك ، إذا كان لديك حق الوصول إلى المعرف لثابت مكتوب ، فستتمكن من تعديل قيمته.

لرؤية الثوابت المكتوبة في العمل ، ضع زرًا في نموذج فارغ ، وقم بتعيين التعليمات البرمجية التالية إلى معالج الأحداث OnClick:

instagram viewer

إجراء TForm1.Button1Click (المرسل: TObject) ؛ مقدار ثابت النقرات: عدد صحيح = 1 ؛ // ليس ثابتًا حقيقيًاابدأ Form1.Caption: = IntToStr (نقرات) ؛ النقرات: = النقرات + 1 ؛ النهاية; 

لاحظ أنه في كل مرة تنقر فيها على الزر ، تزداد تسمية توضيحية بشكل ثابت.
جرب الآن الكود التالي:

إجراء TForm1.Button1Click (المرسل: TObject) ؛ فار النقرات: عدد صحيح ؛ ابدأ Form1.Caption: = IntToStr (نقرات) ؛ النقرات: = النقرات + 1 ؛ النهاية; 

نحن الآن نستخدم متغيرًا غير مهيأ لعداد النقرات. لاحظ أن قيمة غريبة في تسمية توضيحية للنماذج بعد النقر على الزر.

ثوابت مطبوعة

يجب أن توافق على أن فكرة الثوابت القابلة للتعديل تبدو غريبة بعض الشيء. في إصدارات 32 بت من دلفي بورلاند قررت تثبيط استخدامها ، ولكن دعمها لرمز دلفي 1 القديم.

يمكننا تمكين أو تعطيل الثوابت المكتوبة القابلة للتعيين في صفحة المترجم في مربع الحوار خيارات المشروع.

إذا قمت بتعطيل الثوابت المكتوبة القابلة للتعيين لمشروع معين ، عند محاولتك تجميع التعليمات البرمجية السابقة ، ستعطيك دلفي خطأ "لا يمكن تعيين الجانب الأيسر إلى" عند الترجمة. ومع ذلك ، يمكنك إنشاء ثابت مكتوب قابل للتخصيص من خلال التصريح عن:

{$ J +}مقدار ثابت النقرات: عدد صحيح = 1 ؛ {$ J-}

لذلك ، يبدو رمز المثال الأول:

إجراء TForm1.Button1Click (المرسل: TObject) ؛ مقدار ثابت{$ J +} النقرات: عدد صحيح = 1 ؛ // ليس ثابتًا حقيقيًا{$ J-}ابدأ Form1.Caption: = IntToStr (نقرات) ؛ النقرات: = النقرات + 1 ؛ النهاية; 

استنتاج

الأمر متروك لك لتحديد ما إذا كنت تريد تعيين الثوابت المكتوبة أم لا. الشيء المهم هنا هو أنه إلى جانب المثالية للعدادات ، فإن الثوابت المكتوبة مثالية لصنعها مكونات مرئية أو غير مرئية بالتناوب ، أو يمكننا استخدامها للتبديل بين أي منطقي الخصائص. يمكن أيضًا استخدام الثوابت المكتوبة داخل معالج أحداث TTimer لتتبع عدد المرات التي تم تشغيلها.

instagram story viewer