Aktuelles Verzeichnis ändern



  • Hi,

    Ich arbeite gerade ein einem Project, da es aber schon recht groß geworden ist, würde ich es gerne auf mehrere Ordner verteilen.
    Das Problem ist, dass die Exe die Dateien dann aber nicht mehr findet.
    Ich habe im Forum schon was herumgesucht und bin auf die Boost-Lib gestoßen.
    Ich habe sie mir auch runtergeladen, aber habe dann gemerkt, dass sie aus 100000 Dateien besteht und ich kein Ahnung habe, welche die richtige ist.
    Vlt könnte das ja mal einer ausführlich erklären und dann ins FAQ stellen, denn die Frage ist schon häufiger vorkegommen.

    mfg Froli



  • ähm die boost lib besteht aus vielen verschiedenen modulen aus verschiedenen themenbereichen, also WAS genau willst du daraus haben?

    btw: auf www.boost.org gibts ne tolle docu zu allen komponenten



  • Mit der Funktion _chdir() aus der direct.h kannst du das arbeitsverzeichnis setzen.
    Allerdings wenn du sagst dass dein Programm seine Dateien nicht mehr findet, könntest auch aus argv[0] den Programmpfad auslesen und damit alle pfade absolut angeben. Sollte man ja eigentlich auch machen. Denn dann hast du auch das problem nicht, wenn ein user die anwendung von einem anderen verzeichnis aus startet.

    Was wolltest du denn aus boost verwenden dafür?? Glaube das ist mit Kanonen auf Spatzen schieesen.

    rya.
    Scorcher24



  • Ich meine damit folgedes:

    Ich habe folgdende Ordner mit Inhalt:

    Grafik:
    g1.bmp
    g2.bmp

    Sound:
    s1.wav
    s2.mp3

    und die datei game.exe

    Wie kann ich nun in der datei exe die Dateien aus den verschieden Ordner laden?

    Beispiel:

    SDL_LoadBmp( hier kommt jetzt der name der Datei hin, aber dier Datei muss sich im Ordner der Datei befinden, wie kann ich das umgehen und die datei trozdem laden)



  • Also wenn ich das richtig verstehe hast du ein programm wa zu seiner laufzeit viele dateien wie dll, txt, ini usw benötigt und du möchtest die jetzt in unterordner sortieren oder?

    da denn die nächste frage willst du die über absolute pfade(C:\verzeichnis\beispiel.exe ansprechen ? oder relative (verzeichnis/beispiel.exe9 bzw. wie hast du es bisher versucht weil wenn er die dateien nicht findet ist irgend nen fehler in den angaben sollte es z.b. darum gehen das du ne textdatei öffnen willst und dann die fehlermeldung kommt das die datei nicht geöffnet werden konnt dann such mal in deinem programm die stelle wo du die datei öffnest und der fehlerbehandlung dort wo du die fehlermeldung ausgeben lässt füge mal die variable die den dateinamen enthält hinzu meist hilft das nämlich schon weiter



  • SDL_LoadBmp("Grafik/g1.bmp", /* ... */ );
    


  • XVIII schrieb:

    SDL_LoadBmp("Grafik/g1.bmp", /* ... */ );
    

    Das wäre korrekt allerdings wäre

    SDL_LoaBmp("./Grafik...");
    

    besser denke ich. Aber du solltest auf jeden Fall den absoluten Pfad nehmen. Ist immer besser...

    rya.
    Scorcher24



  • Wenn man es wirklich flexibel machen, dann setzt man die Pfade als Umgebungsvariablen und baut den genauen Pfad zu den Dateien mittels eines getenv zusammen.


Anmelden zum Antworten