سؤال

هل هناك دلفي ما يعادل C# #إذا(DEBUG) مترجم التوجيه ؟

هل كانت مفيدة؟

المحلول

استخدام هذا:

{$IFDEF DEBUG}
...
{$ENDIF}

نصائح أخرى

وبصرف النظر عن ما lassevk قال: يمكنك أيضا استخدام عدد قليل من الطرق الأخرى مترجم-التقييم (منذ دلفي 6, أعتقد) :

{$IF NOT DECLARED(SOME_SYMBOL)} 
  // Mind you : The NOT above is optional
{$ELSE}
{$IFEND}

للتحقق مما إذا كان المترجم له هذه الميزة ، استخدام :

 {$IFDEF CONDITIONALEXPRESSIONS}

هناك العديد من الاستخدامات لهذا.

على سبيل المثال ، يمكنك التحقق من إصدار RTL;من Delphi help :

يمكنك استخدام RTLVersion دولار إذا تعبيرات لاختبار وقت التشغيل مكتبة مستوى إصدار مستقل مترجم النسخة المستوى.
على سبيل المثال:{$إذا RTLVersion >= 16.2} ...{$IFEND}

أيضا, مترجم النسخة نفسها يمكن التحقق مرة أخرى من التعليمات البرمجية:

CompilerVersion يتم تعيين القيمة المترجم عند وحدة النظام هو جمعت.فإنه يشير إلى تنقيح مستوى المترجم الميزات / تركيب اللغة ، والتي قد تقدم بشكل مستقل من RTLVersion.CompilerVersion يمكن اختبارها في $إذا التعبير ينبغي أن تستخدم بدلا من اختبار VERxxx الشرطي تحديد.دائما اختبار أكبر من أو أقل من المعروف مراجعة مستوى.انها فكرة سيئة اختبار معين مراجعة مستوى.

آخر شيء أقوم به بشكل منتظم ، هو تحديد رمز عندما لا يعرف حتى الآن (لطيفة إلى الأمام-التوافق) مثل هذا :

 {$IF NOT DECLARED(UTF8String)}
 type
   UTF8String = type AnsiString;
 {$IFEND} 

ويساعد هذا الأمل!

DebugHook هو إذا كان التطبيق قيد التشغيل ضمن IDE المصحح.لا نفس المترجم التوجيه ولكن لا تزال مفيدة جدا.على سبيل المثال:

ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging

هذه التوجيهات المتاحة:

{$IFDEF}
{$ELSE}
{$ENDIF}
{$IFNDEF} //if *not* defined

ويمكن استخدامها كما هو موضح هنا:

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  {$IFDEF MY_CONDITIONAL}
  ShowMessage('my conditional IS defined!');
  {$ELSE}
  ShowMessage('my conditional is NOT defined!');
  {$ENDIF}

  {$IFNDEF MY_CONDITIONAL}
  ShowMessage('My conditional is explicitly NOT defined');
  {$ENDIF}
end;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top