Klabautermann - Sa 30.11.02 20:37
Titel: Versionsabhängig Kompilieren
Hallo,
ich möchte gerne eine meiner Koponenten Delhi-Verionsabhängig Copilieren. Konkret geht es darum, dass ich ein bestimmtes feature, welches die Basiskoponente seit Delhi 6 besitzt deaktivieren möchte.
Natülich kann ich das mit Abfragen alla:
Quelltext
1: 2: 3:
| {$IFDEF VER140} DeaktiviereFeature; {$endif} |
abfangen allerdings muss ich dann für jede Delphi-Version ein eigenes $IFDEF machen. Gibt es eine Möglichkeit diesen Bereich für Delphi 6
und alle Nachfolgenden zu definieren?
Gruß
Klabauutermann
Delete - So 01.12.02 21:01
Prima Frage, Klabautermann. Das habe ich mich nämlich auch schon oft gefragt und dabei neidisch auf C geguckt:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| typedef struct _NOTIFYICONDATAA { DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; HICON hIcon; #if (_WIN32_IE < 0x0500) CHAR szTip[64]; #else CHAR szTip[128]; #endif ... |
Das würde mich auch interessieren. Aber nach der ersten Einschätzung würde ich sagen: das geht wohl leider nicht. :cry:
Klabautermann - Sa 01.02.03 18:16
Hallo,
für alle die dieses Problem haben, könte folgendes Interessant sein:
Seit der Version 14 (Delphi 6/ Kylix 1) gibt es die Komlilerderektiven:
Quelltext
1: 2: 3:
| {$if } {$elseif} {$ifend} |
mit diesen lassen sich Konstanten überprüfen.
Desweiteren gibt es die Konstante
RTLVersion, welche, wie der Name sagt, die Versionsnummer der
Run
time-
Library enthällt.
Kombiniert man diese beiden Informationen, kann man Bedingte Blöcke so konstruieren:
Quelltext
1: 2: 3:
| {$if RTLVersion >= 15} // Code der nur in Delphi7 und höher einkompiliert wird {$ifend} |
Der Haken bei der Geschichte ist, das dies natürlich erst ab Delphi 6 Funktioniert und der Compiler bei älteren Delphi Versionen über die {$if} Compilerderektive stolpert.
Somit ist das ganze in VCL Projekten nur bedinkt nutzbar, in CLX Programmen funktioniert es immer (schielßlich gibt es das ja erst seit Delphi 6).
Bei älteren Delphi Versionen hift dann vor der {$if} Zeile ein Kommentan das Auffordert den ganzen Block auszukommentieren.
Gruß
Klabautermann