Frage

Gibt es einen Delphi-Äquivalent der C # # if (debug) Compiler-Direktive?

War es hilfreich?

Lösung

verwenden:

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

Andere Tipps

Neben dem Gesagten lassevk, Sie können auch ein paar andere Methoden der Compiler-Auswertung verwenden (da Delphi 6, glaube ich):

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

Um zu überprüfen, ob die Compiler diese Funktion hat, zu verwenden:

 {$IFDEF CONDITIONALEXPRESSIONS}

Es gibt mehrere Verwendungen dafür.

Zum Beispiel könnten Sie die Version des RTL überprüfen; Von der Delphi-Hilfe:

  

Sie können RTLVersion in $ IF verwenden   Ausdrücke, die Laufzeit zu testen   Bibliothek Versionsstufe unabhängig   der Compiler-Version Ebene.
  Beispiel: {$ IF RTLVersion> = 16,2} ...   {$ IFEND}

Auch die Compiler-Version selbst überprüft werden kann, wieder aus dem Code:

  

Compiler wird ein Wert zugewiesen   der Compiler, wenn die Systemeinheit   zusammengestellt. Es gibt die Revision   Ebene der Compiler Funktionen /   Sprachsyntax, die vorrücken   unabhängig von der RTLVersion.   Compiler kann in $ IF getestet werden   Ausdrücke und sollte verwendet werden,   anstelle der Prüfung auf die VERxxx   bedingte definieren. Testen Sie immer für   größer oder kleiner ist als ein bekannter   Revisionsstand. Es ist eine schlechte Idee,   Test für einen bestimmten Revisionsstand.

Eine andere Sache, die ich regelmäßig zu tun, ist ein Symbol definieren, wenn es noch nicht definiert ist (schön für zukunfts Kompatiblität), wie folgt aus:

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

Hope, das hilft!

DebugHook wird gesetzt, wenn eine Anwendung unter dem IDE-Debugger ausgeführt wird. Nicht das gleiche wie eine Compiler-Direktive, aber immer noch ziemlich nützlich. Zum Beispiel:

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

Diese Steuerrichtlinien stehen zur Verfügung:

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

, und sie können verwendet werden, wie hier gezeigt:

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top