Seite 1 von 1

Seltsammes Verhalten von GetCurrentDirectory()

Verfasst: 06.09.2011 05:30
von STARGÅTE
Tachchen,

Vorab: Ja mir ist klar, das ich mit GetCurrentDirectory() immer selbst das aktuelle Verzeichnis definieren sollte.
Nun zum Verhalten:
Wenn ich aus folgendem Code eine Exe mache:

Code: Alles auswählen

Text.s = "CurrentDirectory: "+GetCurrentDirectory() + #LF$
Text   + "ProgramFilename: "+ProgramFilename() + #LF$
Text   + "Parameters: "+Str(CountProgramParameters()) + #LF$
For Index = 0 To CountProgramParameters()-1
	Text + Str(Index)+".: "+ProgramParameter(Index) + #LF$
Next

MessageRequester("", Text)
bekomme ich beim ausführen folgende Ausgabe:
CurrentDirectory: C:\Dokumente und Einstellungen\Benutzername\Desktop\
ProgramFilename: C:\Dokumente und Einstellungen\Benutzername\Desktop\Parameter.exe
Parameters: 0
alles soweit richtig.

Drop ich nun eine Datei auf diese Exe erhalte ich sowas:
CurrentDirectory: C:\Dokumente und Einstellungen\Benutzername\
ProgramFilename: C:\Dokumente und Einstellungen\Benutzername\Desktop\Parameter.exe
Parameters: 1
0.: C:\Dokumente und Einstellungen\Benutzername\Desktop\Parameter.pb
Huch, wieso fehlt nun bei CurrentDirectory() der Ordner Desktop?

Komischerweise funktioniert es wieder, wenn ich die Datei auf die Verknüpfung zu der Exe ziehe.

Hat jemand eine Erklärung?

Re: Seltsammes Verhalten von GetCurrentDirectory()

Verfasst: 06.09.2011 05:42
von NicTheQuick
Was passiert denn, wenn die Exe in einem anderen Ordner liegt? Fehlt dann auch der letzte Unterordner oder steht da dann zufällig auch das Benutzerhauptverzeichnis?
Wenn letzteres der Fall ist, dann ist das vielleicht ein normales Verhalten unter Windows, das bei einem Drop der Benutzerordner das aktuelle Verzeichnis ist. Bei einer Verknüpfung kann man ja explizit festlegen, welches das Arbeitsverzeichnis, also das aktuelle Verzeichnis ist.

Das selbe passiert ja auch, wenn man in der Kommandozeile im Ordner C:\ ist und das Programm, das in einem ganz anderen Ordner liegt, von dort aus aufruft. Dann ist das Arbeitsverzeichnis ja immer noch C:\. Aber das müsstest du ja eh wissen. Und die Aussage im ersten Absatz ist eine reine Vermutung. Ich habe jetzt nicht danach gegoogelt.

Re: Seltsammes Verhalten von GetCurrentDirectory()

Verfasst: 06.09.2011 05:47
von STARGÅTE
Was passiert denn, wenn die Exe in einem anderen Ordner liegt? Fehlt dann auch der letzte Unterordner oder steht da dann zufällig auch das Benutzerhauptverzeichnis?
Habs gerade getestet. Es trift das zweite zu. Lege ich die Exe zB auf D:\Test\ dann ist GetCurrentDirectory() wieder C:\Dokumente und Einstellungen\Benutzername\ sobald ich etwas drauf drop'e, ansonsten halt D:\Test\