Wie herausfinden, auf welchem OS man ist...
-
- Beiträge: 13
- Registriert: Sa 16. Jun 2007, 18:47
Wie herausfinden, auf welchem OS man ist...
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)?
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)?
-
- 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:
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.
alternativ halt {$ifdef linux}
(ich finde die Liste aller Compileranweisungen gerade nicht wieder
)
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}
(ich finde die Liste aller Compileranweisungen gerade nicht wieder

Johannes
-
- Beiträge: 13
- Registriert: Sa 16. Jun 2007, 18:47
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....

..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....
-
- 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)
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 !
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
Michael Springwald
-
- 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:
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.
-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/
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.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....
-
- 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:
naja, sollte sich doch verblüffend einfach machen lassen, nimm einfach ne var und setz verschiedene Werte: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....
Code: Alles auswählen
var: os: byte
{$ifdef mswindows}
os := 1
{endif}
{$ifdef linux}
os := 2
{endif}
//usw
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
-
- 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)
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 !
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
Michael Springwald
-
- 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:
Dafür gibts ausserdem DirectorySeparator und AppendPathDelim nur um Theo mal zu ergänzen.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 \ ,
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/