Announcement

Collapse
No announcement yet.

Windowsversion für bedingte Compilierung ermitteln ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Windowsversion für bedingte Compilierung ermitteln ?

    Hi,

    ist es möglich per Compilerswitch festzulegen, ob eine bestimmte Funktion nur unter Windows 2000 oder Windows XP oder höher eingebunden bzw. verarbeitet wird ?

    Es gibt die Unterscheidung zwischen 16bit und 32bit, wenn ich mich recht erinnere (etwa so: {* ifndef #win32} ??)

    Aber ist diese Unterscheidung auch als Auschluß für bestimmte OS möglich ?

    Hintergrund: durch folgende Funktion:

    function SetLayeredWindowAttributes ( Wnd: hwnd ;crKey: ColorRef ; Alpha: Byte ; dwFlags: DWORD): Boolean ; stdcall ; external 'user32.dll' ;

    kann man die Transparenz unter o.g. Betriebssystemen festlegen, das Fenster erscheint dann durchscheinend. Jedoch ist dieser Aufruf in OS wie der 9x-Reihe und Windows ME nicht enthalten.
    Daher meine Frage.

    Vielen Dank + Gruß
    Mathias

  • #2
    Es wäre für Dich geschickter, die DLL dynamisch zu laden. Dazu gibt es hier im Forum viele Beispiele:<br>
    z.B.: http://www.entwickler-forum.de\webx?50@@.ee8d77d (LoadLibrary)<br>
    Dann musst Du nicht für jedes Betriebssystem eine eigene Exe-Datei erzeugen.<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Korrekt, es ist sogar der einzigst saubere Weg. Statt also eines statischen Importes, wie oben, musst du einen dynamischen Import nutzen.<br>
      Ansich kann man die Frage selber beantworten. Ein Compilerswitch sorgt dafür das der Compiler nur bestimmten Source unter bestimmten Bedinungen in die EXE compiliert. D.h. die EXE enthält nur denjenigen Sourcepart der durch die bedingte Compilierung aktiviert wurde. Nun, aber was soll uns das bringen ?? Wenn die EXE auf jedem Windows laufen soll dann muß sie ja auch jede Windowsversion unterstützen. Eine bedingte Compilierung bringt da also rein garnichts.<br>

      Gruß Hage

      Comment


      • #4
        Danke.
        Gruß Mathia

        Comment


        • #5
          Hm, gibt es dennoch einige Copilerswitches für D5, welche sich auf die verschiedenen OS beziehen ?

          Gruß Mathia

          Comment


          • #6
            Hallo,

            &gt;einige Copilerswitches für D5, welche sich auf die verschiedenen OS beziehen ?

            wenn das Programm auf dem eigenen Rechner für verschiedene Betriebssystem-Versionen compiliert werden soll, muss man eigene Schaltersymbole für die bedingte Compilierung im Programm unterbringen. Denn wie sollte Delphi <b>5</b> irgend etwas über <i>Windows XP</i> wissen

            Comment


            • #7
              ... ausserdem, möchtest Du mit Deinem Projekt auf einen anderen Rechner mit zum Beispiel Windows 98 gehen, um das Projekt noch mal mit den dann aktiven Switches für ein anderes System zu compilieren?<p>
              Oft wird es so gemacht, das man sich eine MeinProj.inc Datei mit den Schaltern:<p>
              {$DEFINE WINXP}<p>
              anlegt. Dann bindet man diese Datei in <b>jede</b> Unit ganz oben ein:<p>
              {$i MeinProj.inc}<p>
              Fertig: Das Auskommentrieren von dem $DEFINE in der inc-Datei wirkt sich sofort auf alle Units aus. Ich kompiliere so zum Beispiel manchmal spezielle Debug-Build's oder im Leistungsumfang unterschiedliche Versionen.<p>
              Schöne Grüße, Mario Noac
              Schöne Grüße, Mario

              Comment


              • #8
                Ok. Vielen Dank
                ~Gruß mathia

                Comment

                Working...
                X