PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++ "Arbeitsverzeichniss" innerhalb der Anwendung ändern



DanDanger
31-05-2003, 20:53
Hallo,

ich schreibe gerade mit SDL/OpenGL ein kleines 3D-Proggi, und hab' jetzt folgendes Problem :

In meinem Programm liegen die Model-Files (3DS-Files) im Unterordner "data/models" . Im selben Ordner liegen auch die Bitmap's für die Model-Skins, da die 3DS-Files in "ihrem" Ordner nach den Skin's suchen.


Wenn ich nun das Modell-File in meinem Programm mit

LoadModel("data/models/aModel.3ds") ;

Lade,
findet er das Skin-File nicht, da die Routiene die Skin-Datei im Aktuellen Verzeichniss sucht (aber das ist ja nunmal das Verzeichniss, aus dem ich die Anwendung heraus starte, und nicht "data/models").

Das Problem ist also : Wenn nun das Model versucht, "sein" Skin-File zu laden, wird es nicht gefunden, da das akt. Verzeichniss ja nicht "data/models" ist, sondern das Verzeichniss, aus dem die Anwendung heraus gestartet wird (z.B. "usr/local/bin", etc.)


Wenn ich die Skin-Files in das Verzeichniss Kopiere, in dem auch die Anwendung liegt, klappt alles.

Lange vorrede, kurze Frage :
Wie kann ich innerhalb meiner Anwendung das Aktuelle Verzeichniss wechseln ??

Das ganze sollte ungefähr so aussehen :
1) Vom Hauptverzeichniss der Anwendung nach "data/models" wechseln
2) Alle Models samt Skin-Files laden
3) Wider zurück ins Hauptverzeichniss der Anwendung wechseln
4) Programm normal fortsetzen....

PS: Wenn es so eine Fkt. gibt, ist sie Plattformunabhängig (da das ganze sowohl unter Linux als auch unter Windows laufen soll) ????

Neugierige Grüsse
DanDanger

Jasper
31-05-2003, 23:48
Original geschrieben von DanDanger

PS: Wenn es so eine Fkt. gibt, ist sie Plattformunabhängig (da das ganze sowohl unter Linux als auch unter Windows laufen soll) ????


getcwd() zum auslesen, chdir() zum wechseln.
sind standard-funktionen.

-j

anda_skoa
02-06-2003, 14:54
Das Problem dürfte eher sein:
Wie findest du im Betrieb heraus, wo das Installations Verzeichnis ist?

Ciao,
_

Jasper
02-06-2003, 15:01
Original geschrieben von anda_skoa
Das Problem dürfte eher sein:
Wie findest du im Betrieb heraus, wo das Installations Verzeichnis ist?


über environment-variablen.
machen viele so, ist simpel und funktioniert.

-j

anda_skoa
02-06-2003, 15:20
Original geschrieben von Jasper
über environment-variablen.
machen viele so, ist simpel und funktioniert.


Oder über eine Config Datei an einem definiertem Ort (zB: /etc)

Aber ich wollte nur darauf hinweisen, dass eigentlich dieses Problem das wichtigerere ist.
Denn wenn man den Pfad zum Installationsverzeichnis hat, könnte man auch volle Pfade benutzen.

Ciao,
_

Jasper
02-06-2003, 15:49
Original geschrieben von anda_skoa
Oder über eine Config Datei an einem definiertem Ort (zB: /etc)


geht auch, environment funktioniert aber unter windows und unix gleich :)



Aber ich wollte nur darauf hinweisen, dass eigentlich dieses Problem das wichtigerere ist.
Denn wenn man den Pfad zum Installationsverzeichnis hat, könnte man auch volle Pfade benutzen.


ist schon klar, hab ich auch so verstanden :)

-j