33 Stimmen

Lazarus: Betriebssystem erkennen (Compiler Switch)

Tipp von Delphianer | Letztes Update am 29.04.2021 | Erstellt am 17.05.2013

Schreibt man eine Anwendung für mehrere Betriebssysteme mit Lazarus, kann es nötig sein, je nach System an bestimmten Stellen einen anderen Code auszuführen oder andere Units einzubinden. Dennoch möchte man natürlich den gleichen Code nicht immer wieder an das jeweilige System anpassen, auf dem man gerade kompiliert und quasi eine Lösung für alle Systeme vorhalten.

In diesem Tipp möchte ich euch daher zeigen, wie ihr dem Compiler zeigen könnt, dass ein bestimmter Code nur für ein bestimmtes System gilt. Dabei könnt ihr die Compiler Direktiven {$IFDEF}, {$ENDIF} sowie {$ELSE} verwenden.

Dazu ein kleines Beispiel:

{$IFDEF WINDOWS}
   {$IFDEF WIN32}
      showmessage('32 Bit Windows');
   {$ENDIF}

   {$IFDEF WIN64}
      showmessage('64 Bit Windows');
   {$ENDIF} 
{$ELSE}
   showmessage('Kein Windows.');
{$ENDIF}

In diesem Beispiel benutzen wir zunächst eine IF-Abfrage, ob es sich um ein Windows-System handelt. Falls ja, schauen wir, ob es sich um ein 32 Bit oder 64 Bit Windows handelt und geben entsprechende Meldung aus. Falls nein, geben wir eine Meldung aus, dass es sich nicht um Windows handelt.

Die Direktiven lassen sich beliebig kombinieren und an beliebiger Stelle nutzen. So kann man nicht nur Code nur für bestimmte Systeme verfügbar machen sondern zum Beispiel auch im USES-Bereich je nach System andere Units hinzufügen oder auslassen.

Liste der Betriebssystem Direktiven

In dieser Liste habe ich einmal die wichtigsten Direktiven für die jeweiligen Systeme zusammengefasst.

SystemDirektive
Alle Windows Systeme{$IFDEF WINDOWS}
Windows 32 Bit{$IFDEF WIN32}
Windows 64 Bit{$IFDEF WIN64}
Windows CE{$IFDEF WINCE}
Linux{$IFDEF LINUX}
Mac OS X{$IFDEF DARWIN}
Classic Macintosh{$IFDEF MAC}
OS2{$IFDEF OS2}
FreeBSD{$IFDEF FREEBSD}
NetBSD{$IFDEF NETBSD}
Amiga{$IFDEF AMIGA}
Atari{$IFDEF ATARI}
PalmOS{$IFDEF PALMOS}

Mehr Direktiven findet ihr unter Compiler Defines During Compilation auf freepascal.org. So lässt sich zum Beispiel auch feststellen, welche CPU benutzt wird und vieles mehr.

AntwortenPositivNegativDatumStimmen
Avatar
00 Stimmen

Hmmm.... Deine 2te Zeile: {$IFDEF WIN64}

Sollte da nicht {$IFDEF WIN32} stehen?

Vielen dank für deine Info/dein Tipp!
29.04.2021 um 16:05

AntwortenPositiv Negativ
Avatar
00 Stimmen

Vielen Dank für den Hinweis!

Absolut richtig, da müsste WIN32 stehen. Ich habe die Stelle korrigiert.
29.04.2021 um 16:46

Positiv Negativ
Avatar
00 Stimmen

Super!

Ich danke dir.

Das ist mir zuerst auch nicht aufgefallen, erst die doppelte Meldung war etwas komisch.
01.05.2021 um 17:31

Positiv Negativ
Antworten
Antworten

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

Was ist das beste Betriebssystem?

Offene Abstimmung | 6 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.