Windowsversionen unter Delphi

Hallo,

ich habe ein paar Routinen geschrieben, in denen am Anfang durch eine Funktion die Windowsversionen (grob: Win32, WinNT) ausliest und dann die folgende Compilierung durch Compilerdirektiven beeinflusst werden.

Hierbei ist eine Funktion ÜBER dem implementation-Teil, da einige Deklarationen darauf aufbauen.

Nun ist mir allerdings bewusst, dass dies nicht geht.
Deshalb meine Frage: Wie kann man die Windows-Version noch VOR dem Implementationsteil ausfindig machen?

Funktioniert es, wenn ich eine neue Unit programmiere, in der die Funktion steht und diese Unit bei den uses einsetze?

Gruß
frolic

Hallo,

in diesem Zusammenhang kenne ich nur die Compileranweisung

{$ifdef WIN32}

[Code]
{$else}
[anderer Code]
{$endif}

statt WIN32 könnte da auch LINUX stehen. Weitere Unterscheidungen des OS stehen meines Wissens nicht zur Verfügung.

Mir ist auch nicht ganz klar, was eine Funktion mit der Compilierung zu tun haben soll. Die Funktionen stehen erst nach der Compilierung zur Verfügung, können also vom Compiler gar nicht benutzt werden.

Gruß, Niels

Gruß, Niels

Also ich hab auch den Eindruck, dass du da was durcheinander bringst :wink:

ich habe ein paar Routinen geschrieben, in denen am Anfang
durch eine Funktion die Windowsversionen (grob: Win32, WinNT)

Klingt für mich, als würdest du zur LAUFZEIT auslesen, auf welchem (Windows) OS dein Programm läuft, und dann ggf. mit „normalen“ IF-Statements (vermutlich) unterschiedliche API-Funktionen aufrufst.

ausliest und dann die folgende Compilierung durch
Compilerdirektiven beeinflusst werden.

Das ist was ganz anderes. Wie Nils sagte, Compiler-Direktiven haben nichts mit „normalen“, d.h. „Laufzeit-IFs“ der Pascal-Sprache zu tun. Mit diesen Compiler-Direktiven baust Du sozusagen ein komplett anderes Programm, da Code u. U. ausgelassen/vertauscht wird.

Nun ist mir allerdings bewusst, dass dies nicht geht.
Deshalb meine Frage: Wie kann man die Windows-Version noch VOR
dem Implementationsteil ausfindig machen?

Musst Du evtl. für verschiedene Windows-Versionen spezielle Versionen deines Programms liefern ?

Dann geht das wie oben beschrieben mit einer gemeinsamen EXE und „normalen“ Sprach-gesteuerten IFs.

Oder Du machst das mit Compiler-Direktiven. Ob die so „fein“ granuliert sind und zwischen NT 4, Win98, WinME etc. unterscheiden weis ich nicht. Selbst fals ja, würde das aber bedeuten, dass Delphi dann NUR DAS AUSLIEST WAS AUF DEM COMPILIERUNGS-PC vorhanden ist. Wenn der Win2000 ist, sprechen die Win2000-Compiler-Direktiven an und es werden keine (möglichen) Win98-Bedingungen berücksichtigt.