Wie herausfinden, auf welchem OS man ist...

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
oliver1974
Beiträge: 13
Registriert: Sa 16. Jun 2007, 18:47

Wie herausfinden, auf welchem OS man ist...

Beitrag von oliver1974 »

Hallo zusammen,

Tja, mein erster Post als Lazarus Neuling. Bin normalerweise
mehr so der Java- und Python-Mensch...

FreePascal (in Verbindung mit Lazarus) erscheint mir ganz interessant, die FreePascal
Syntax ist nicht so ganz abgedreht wie es manchmal bei C/C++ mit allen Macros
und typedefs ist....

Und schon gleich eine Frage: Wie stellt ihr fest, auf welchem Betriebssystem ihr euch befindet (immerhin kann man ja portablen Code mit Lazarus schreiben)?

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Willkommen im Forum.

Normalerweise musst du ja nicht immer wissen, auf welchem Betriebssystem du bist. Der Code sollte für alle gleichermaßen funktionieren.

Wenn du auf plattformspezifische Sachen zugreifen willst, wie Windows-Api oder Linuxanwendungen oder sonstwas, kannst du das ganze mit Compileranweisungen an das Betriebssystem anpassen, so das der entsprechende Code nur bei diesem Betriebssystem mit compiliert wird.

Code: Alles auswählen

{$ifdef mswindows}
//..code
{endif}
alternativ halt {$ifdef linux}
(ich finde die Liste aller Compileranweisungen gerade nicht wieder :( )
Johannes

oliver1974
Beiträge: 13
Registriert: Sa 16. Jun 2007, 18:47

Beitrag von oliver1974 »

Danke erstmal :-)

..tja, "sollte" ist das Stichwort, das funktioniert ja nicht mal unbedingt bei expliziten Multi-Plattformumgebungen wie Java oder Python, einen Switch für bestimmte Besonderheiten (je nach Plattform) hat man da doch immer gerne drin...

Es gibt tatsächlich keine Möglichkeit, zur Laufzeit herauszufinden, auf welchem OS ich bin? ..okay, könnte ich mir notfalls auch selber zurechtdengeln... auf bestimmte Umgebungsvariablen prüfen sollte ja auch helfen....

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

als Idee hätte ich noch zu bittet welche Programme als Standart laufen
z.b. unter Windows ist es mit sicherheit die Rundll32.exe die müsste immer laufen

unter Linux bin ich mir nicht sicher. Aber das währe mit Sicherheit eine Möglichkeit.
Man müsste nur schauen ob diese Programm oben sind oder nicht !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Defines:

-Windows:
MSWINDOWS
WINDOWS
WINCE
WIN32
WIN64
- Unix
UNIX
- Linux
LINUX
- MacOS
MACOS

Im "Editor für Codetools Einstellungen" (frag mich nich warum man das umbenannt hat hiess vorher Codetools defines Editor)
findest au auch alle Defines die im aktuellen Systeme gültig sind.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

oliver1974 hat geschrieben:
Es gibt tatsächlich keine Möglichkeit, zur Laufzeit herauszufinden, auf welchem OS ich bin? ..okay, könnte ich mir notfalls auch selber zurechtdengeln... auf bestimmte Umgebungsvariablen prüfen sollte ja auch helfen....
Ich glaube, du verwechselst da was. Freepascal ist nicht Java. Es muss beim Kompilieren schon bekannt sein, da du ja für jedes OS separat builden musst.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

LoL genau schaun welche Programme laufen.
Du könntest auch die Prozessortemperatur messen im Linux ist diese im Schnitt 2° kühler als im Windows.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

oliver1974 hat geschrieben:Es gibt tatsächlich keine Möglichkeit, zur Laufzeit herauszufinden, auf welchem OS ich bin? ..okay, könnte ich mir notfalls auch selber zurechtdengeln... auf bestimmte Umgebungsvariablen prüfen sollte ja auch helfen....
naja, sollte sich doch verblüffend einfach machen lassen, nimm einfach ne var und setz verschiedene Werte:

Code: Alles auswählen

var: os: byte
 
{$ifdef mswindows}
os := 1
{endif}
{$ifdef linux}
os := 2
{endif}
//usw
dann hättest du es auch einfach zur Verfügung.

Theo hat aber natürlich recht, du musst eh vor dem Compilieren ein Ziel-OS einstellen. Aber trotzdem, falls du das umstellen willst, hilft dir das ganze ja auch weiter.
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Es währe aber auch noch anderer gründe vorstellbar warum man das OS ermitteln möchte auf das man gerade ist. z.b. Verzeichnis angeben
unter Linux mit / unter Windows mit \ ,

Oder z.b. Programme die gestartet werden sollen. dies es unter Windows nicht gibt, das unter Windows dann alternative Programm gestartet werden !
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

eben, und dafür gibst ja ifdef ;)
Johannes

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:Es währe aber auch noch anderer gründe vorstellbar warum man das OS ermitteln möchte auf das man gerade ist. z.b. Verzeichnis angeben
unter Linux mit / unter Windows mit \ ,
Dafür gibt's PathDelim

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

(frag mich nich warum man das umbenannt hat hiess vorher Codetools defines Editor)
Ich würde sagen, man hat eine Übersetzung eingetragen. Falls du eine bessere Übersetzung hast, dann her damit.

knight

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Es währe aber auch noch anderer gründe vorstellbar warum man das OS ermitteln möchte auf das man gerade ist. z.b. Verzeichnis angeben
unter Linux mit / unter Windows mit \ ,
Dafür gibts ausserdem DirectorySeparator und AppendPathDelim nur um Theo mal zu ergänzen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Oh, da hat Pluto ja was falsches gesagt ;)

Aber bei Programmen und Co hat er ja recht, wie beim Browser aufrufen :lol:
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Oh, da hat Pluto ja was falsches gesagt
In das Wespennest hätt ich jetzt nicht gestochen ;)

Das kann mans aber grösstenteils mit defines machen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten