في دلفي، هناك أيضًا تعليمات مجمعة مسبقًا مشابهة للغة C. على الرغم من أن هذا النوع من التعليمات فعال فقط في الملف الفردي الحالي (قد يكون أيضًا أن المؤلف لا يفهم بشكل كامل الاستخدام الفعلي لهذا النوع من التعليمات)، فإن هذا النوع من التعليمات التعليمات مفيدة للتجميع متعدد الإصدارات (مثل نشر نسخة تعليمية من الإصدار القياسي) لها استخدامات جيدة جدًا.
واحد. مقدمة التعليمات:
1. تحديد التوجيه:
التنسيق: {$DEFINE name}
الوصف: يستخدم لتحديد الرمز (Symbol) الصالح في الوحدة الحالية. مُعرف
يمكنك بعد ذلك استخدام تعليمات IF DEF وIFNDEF لتحديد ما إذا كان الرمز موجودًا أم لا.
2. أمر صندوق الأمم المتحدة للبيئة:
التنسيق: {$UNDEF name}
الوصف: يستخدم لإلغاء الرمز (Symbol) الذي تم تعريفه في الوحدة الحالية. هذا التوجيه وتعريف
تستخدم معا.
3. توجيه IFDEF:
التنسيق: {اسم IFDEF$}
ملاحظة: إذا تم تعريف الاسم بعد هذا التوجيه، فسيتم تجميع مقطع التعليمات البرمجية بعد هذا التوجيه حتى {$ELSE} أو {$ENDIF}.
4. توجيه IFNDEF:
التنسيق: {اسم IFNDEF}
ملاحظة: إذا لم يتم تعريف الاسم بعد هذا التوجيه، فسيتم تجميع مقطع التعليمات البرمجية بعد هذا التوجيه حتى {$ELSE} أو {$ENDIF}.
5. تعليمات IFOPT:
التنسيق: {$IFOPT Switch}
ملاحظة: إذا تم تعيين المفتاح بعد هذه التعليمات، فسيتم تجميع مقطع التعليمات البرمجية بعد هذه التعليمات حتى {$ELSE} أو {$ENDIF}.
مثال: {$IFOPT R+}
Writeln('قم بتشغيل مفتاح فحص النطاق عند الترجمة');
{$ENDIF}
6. تعليمات أخرى:
التنسيق: {$ELSE}
الوصف: تحديد ما إذا كان يجب تجميع مقطع التعليمات البرمجية بين التعليمات و{$ENDIF} أو تجاهله من خلال الحكم على التعبير الشرطي للبادئة Ifxxx.
7. توجيه ENDIF:
التنسيق: {$ENDIF}
الوصف: يتعاون مع Ifxxx للإشارة إلى الموضع النهائي لمقطع التعليمات البرمجية المصدر للمقطع المشروط المترجم مسبقًا.
اثنين. مثال:
اكتب أمثلة لتنفيذ أعمال الترجمة بدون مقاطع التعليمات البرمجية عن طريق التحديد المسبق لرموز الترجمة المختلفة.
1. قم بإنشاء مشروع دلفي جديد وأضف زر Button على شكل وحدة Unit1.
2. أكتب البرنامج كالآتي:
الوحدة 1؛
واجهة
الاستخدامات
Windows، الرسائل، SysUtils، الفئات، الرسومات، عناصر التحكم، النماذج، مربعات الحوار،
StdCtrls;
يكتب
TForm1 = الفئة (TForm)
Button1: TButton؛
PROcedure FormCreate(Sender: TObject);
الإجراء Button1Click(Sender: TObject);
خاص
{تصريحات خاصة}
عام
{التصريحات العامة}
أ: سلسلة؛
نهاية؛
فار
Form1: TForm1؛
تطبيق
{$R *.DFM}
{$DEFINE AAA} // سطر التعريف.
الإجراء TForm1.FormCreate(Sender: TObject);
يبدأ
أ := 'أخرى';
{$إيفديف AAA}
أ := 'AAA';
{$ENDIF}
{$IFDEF BBB}
أ := 'BBB';
{$ENDIF}
نهاية؛
الإجراء TForm1.Button1Click(Sender: TObject);
يبدأ
التسمية التوضيحية := أ؛
نهاية؛
نهاية.
{ملاحظة: النص الغامق هو الرمز الذي تم إدخاله}
3. بعد التجميع والتشغيل، اضغط على الزر، وسترى "AAA" معروضًا في شريط عنوان النموذج. يقوم البرنامج بتجميع العبارة a := 'AAA'.
4. قم بتغيير مقطع البرنامج الذي يحدد السطر:
عندما تغيرت إلى
{$تعريف BBB}
عندما تقوم بالتجميع والتشغيل مرة أخرى، ستشاهد "BBB" معروضًا في شريط عنوان النموذج. يقوم البرنامج بتجميع العبارة a := 'BBB'.
عند إلغاء تحديد صف أو التغيير إليه
{$تحديد لا شيء}
أو أسماء أخرى، قم بتجميعها وتشغيلها مرة أخرى، وسترى كلمة "أخرى" معروضة في شريط عنوان النموذج. يقوم البرنامج فقط بتجميع العبارة a := 'Other'.
ثلاثة. كيفية إنشاء الإصدارات وتغييرها بسرعة:
باستخدام تعليمات الترجمة المسبقة، عند إنشاء إصدارات متعددة من نفس البرنامج، ما عليك سوى العثور على الوحدات المختلفة في كل إصدار، وتحديد رموز الإصدار الموحد (Symbols) بالتسلسل، ثم إضافة تعليمات الترجمة المسبقة المشروطة إلى مقطع البرنامج الذي يمكنك اختياره تجميع أجزاء مختلفة من البرنامج أثناء التجميع الفعلي، مما له تأثير جيد على توحيد البرنامج (تحديد رمز الإصدار الموحد) والسرية (تقوم الإصدارات المختلفة بتجميع أجزاء مختلفة من البرنامج).
ومع ذلك، نظرًا لأن هذا النوع من التوجيه المترجم مسبقًا لا يمكن أن يعمل إلا على الوحدة الحالية، فإن الإزعاج هو أنه لا يمكن تعريف رمز الإصدار مرة واحدة في وحدة مشتركة، ولكن يجب تحديد رمز إصدار موحد في كل وحدة. تحتاج إلى التأكد من تغيير كافة رموز الإصدار للتأكد من صحة كل إصدار، ولهذا يمكنك استخدام وظيفة "البحث في" الخاصة بـ Delphi IDE. الملفات..." (البحث عن سلاسل في ملفات متعددة) تعمل على العثور على جميع الملفات والمواقع التي تحدد رموز الإصدار، ثم قم بتغييرها بالتسلسل للتأكد من تصحيح جميع المواقع.