Delphi #IF (debug) äquivalent?
-
02-07-2019 - |
Frage
Gibt es einen Delphi-Äquivalent der C # # if (debug) Compiler-Direktive?
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;