Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Erkennnung des Betriebssystems

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.03.2008
    Beiträge
    50

    Erkennnung des Betriebssystems

    Hallo,

    ich möchte eine C++ Klasse plattformunabhängig gestalten. Ich muss aber auf verschiedene Pfade zugreifen, die in verschiedenen Betriebssystemen unterschiedlich sind. Gibt es eine Möglichkeit, dass das Programm selbst herausfindet, unter welchem OS es gerade läuft?

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Wenn du zumindest weißt, dass es sich um ein Posix-kompatibles System handelt, dann kannst du die Funktion uname verwenden, um einen genaueren Namen zu erfragen.

    Was die Pfade angeht, die Qt Bibliothek hat eine Klasse namens QDesktopServices die Namen einiger üblicher Pfade ausgeben kann. Damit wärst du zumindest unter Windows, Mac und GNU/Linux einigermaßen versorgt.

    Ansonsten besteht ja immer noch die Möglichkeit, dass der Benutzer dem Programm mitteilt, wie die Pfade heißen. Ich empfehle dir auch, das Herausfinden der Pfade und das Benutzen der Pfade nicht in einer Klasse zu koppeln. Stattdessen sollte es jeweils eine Komponten geben, welche die tatsächliche Arbeit mit den Pfaden macht, und getrennt davon eine oder mehrere Komponenten die die Pfade liefern.

  3. #3
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Afair gibt es auch in der boost-Bibliothek Funktionen, die sowas zur Verfügung stellen (siehe zb. auch http://www.linux-magazin.de/heft_abo...r_c?category=0)
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    In vielen Fällen reicht es, den Check zu Buildtime zu machen, d.h. wenn zum Beispiel zwischen Linux und Windows unterschieden werden soll.

    Dazu gibt es dann meistens #define Keyword, z.B. bei Verwendung von Qt ist unter Windows Q_OS_WIN definiert, usw.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Zitat Zitat von anda_skoa Beitrag anzeigen
    In vielen Fällen reicht es, den Check zu Buildtime zu machen, d.h. wenn zum Beispiel zwischen Linux und Windows unterschieden werden soll.

    Dazu gibt es dann meistens #define Keyword, z.B. bei Verwendung von Qt ist unter Windows Q_OS_WIN definiert, usw.

    Ciao,
    _
    Das reicht aber nicht für die Pfade, denn je nach Windows Version gilt nur einer der Folgenden:
    C:\Program Files
    C:\Programme

    C:\Dokumente und Einstellungen\Benutzername
    C:\Windows\Profile\Benutzername
    C:\Wie auch immer das auf Englisch heißt\Benutzername

    etc.

    Was man sieht: Die Pfade hängen von der Sprache und Windows Version ab und auf welcher Partition Windows installiert ist. Aber dafür gibts eigentlich Environment Variablen. Weiß net genau wie die heißen, %HOMEDRIVE%\%HOME% oder so ähnlich.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von panzi Beitrag anzeigen
    Das reicht aber nicht für die Pfade, denn je nach Windows Version gilt nur einer der Folgenden:
    C:\Program Files
    C:\Programme
    Dafür gibt es Win API Funktionen, ist also kein Problem.

    C:\Dokumente und Einstellungen\Benutzername
    C:\Windows\Profile\Benutzername
    C:\Wie auch immer das auf Englisch heißt\Benutzername
    Nachdem das ebenfalls Lokalisierungsunterschiede sind, nehme ich stark an, dass es dafür ebenfalls Windows API Funktionen gibt, bzw. abfragbare Windowsversionen, etc.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •