Seltsammes Verhalten von GetCurrentDirectory()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Seltsammes Verhalten von GetCurrentDirectory()

Beitrag 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?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Seltsammes Verhalten von GetCurrentDirectory()

Beitrag 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.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Seltsammes Verhalten von GetCurrentDirectory()

Beitrag 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\
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten