Pfad herausfinden
-
FileOpen Dialog? Die einzige Möglichkeit die mir gerade einfällt ist bei der Verknüpfung das Arbeitsverzeichnis einzustellen, was niemand denn ich kenne nutzt.
-
flammenvogel schrieb:
FileOpen Dialog? Die einzige Möglichkeit die mir gerade einfällt ist bei der Verknüpfung das Arbeitsverzeichnis einzustellen, was niemand denn ich kenne nutzt.
Und?
Es geht nur darum, dass GetOpenFileName möglicherweise das Arbeitsverzeichnis eines Programms ändert. Damit ist dein Tipp "Einfach relative Pfade benutzen" eben nicht mehr nutzbar. Darauf wollte ich hinweisen. Du hattest "in der Regel" geschrieben, ich habe deutlich gemacht, was diese Regel ist. Was das damit zu tun hast, wie die Leute, die du kennst, GetOpenFileName benutzen, ist mir nicht klar.
-
flammenvogel schrieb:
FileOpen Dialog? Die einzige Möglichkeit die mir gerade einfällt ist bei der Verknüpfung das Arbeitsverzeichnis einzustellen, was niemand denn ich kenne nutzt.
Dann kennste jetzt was Neues.
-
Ich regle das immer so:
String BilderPfad= Application->ExeName+"Bilder";
Ist nicht die Beste Methode, ich weiß, aber effektiv!
-
EinM schrieb:
Ist nicht die Beste Methode, ich weiß, aber effektiv!
Nö. Zumindest nicht für WinAPI.
-
Was meint ihr mit FileOpen Dialog?
-
flammenvogel schrieb:
Was meint ihr mit FileOpen Dialog?
Das ist der Standarddialog, den die API-Funktion GetOpenFileName anzeigt. Das sollte nur ein Beispiel dafür sein, wie man zur Laufzeit das Arbeitsverzeichnis eines Programmes ändern kann, auch wenn das nur ein Seiteneffekt dieser Funktion ist.
-
-
Ähm ja, ich benutze den Dialog in einem meiner Programme und ich lade die Bilder in dem Programm nicht über den vollständigen Dateipfad...
-
flammenvogel schrieb:
Ähm ja, ich benutze den Dialog in einem meiner Programme und ich lade die Bilder in dem Programm nicht über den vollständigen Dateipfad...
Und? Bloß weil es bei dir klappt, ist das doch keine Garantie.
Möglicherweise lädst du die Bilder, bevor du GetOpenFileName benutzt. Oder du wechselst gar nicht das Verzeichnis. Oder du setzt es hinterher zurück. Oder du benutzt 9x/ME mit OFN_NOCHANGEDIR. Darum geht es doch gar nicht.
-
Wenn du in dem Dialog in einen anderen Ordner wechselst, ändert sich auch das Arbeitsverzeichnis.
-
dann macht es doch ganz einfach lasst euch den programmpfad doch geben z.b
int main (int argc, char *argv[]) { cout<<"Dateiname: "<<argv[0]<<endl;argv[0] enthält ja den kompleten pfad + dateienamen
als nächstes einfach nach dem letten / einfach abschneiden und das ganze z.b. in nem string ablegen
und danach kannstde jedes unterverzeichnis ansprechen
pfad = root pfad += unterverzeichnis_dateinamenfertig
in der winapi gab es glaub ich sogar nen einfachen befehl dafür
-
argv[0] enthält ja den kompleten pfad + dateienamen
Nicht immer.
-
Das mit dem pfad nicht angeben weil die die im Verzeichnis der .exe Datei drin sind brauchen keine extra pfadangabe hab ich mir auch schon gedacht...
Aber das is ned so gut glaub ich...Wird der pfad vlt irgendwo gespeichert oder so?
Ich möchte dann ja auf die Bilder zugreifen können wenn ich alles installiert hab.
Und keine variablen Pfade zu verwenden wäre nicht so toll, weil viele Leute Spiele in irgendwelchen Ordnern speichern.Ich meine man könnte den Pfad auch in eine .txt Datei schreiben oder so, aber die müsste man auch irgendwo speichern (in einem fixen Verzeichnis).
Fällt euch noch was ein?
-
Du wurdest doch auf die FAQ verwiesen?! Da stehts doch drin! (GetModuleFileName)
-
oh sorry...hab ich verpeilt!
