Autor Beitrag
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Sa 30.11.02 20:37 
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:
ausblenden 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
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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:
ausblenden 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 Runtime-Library enthällt.

Kombiniert man diese beiden Informationen, kann man Bedingte Blöcke so konstruieren:
ausblenden 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