![]() |
Re: C: = C:\Windows\System32
Auweia.
Das habe ich auch gerade rausgefunden. Warum das allerdings nicht dokumentiert wurde? Also nochmal zum mitlesen: +Delphi in E:\Delphi startet ++TestProgramm in P:\Test GetFullPathName mit "C:" liefert: "C:\" GetFullPathName mit "P:" liefert: "P:\Test" GetFullPathName mit "E:" liefert: "E:\Delphi" Wer Delphi gestartet hat ist dabei irrelevant. Es wird nur der ein Parent verwendet. Bei Eingabe von "X:" liefert die Funktion dann das aktuelle Verzeichnis, wenn X: auch der Laufwerksbuchstabe des aktuellen Verzeichnisses des Prozesses oder dessen Elternprozess ist. |
Re: C: = C:\Windows\System32
OK, dann halt ganz einfach:
Delphi-Quellcode:
[edit]
begin
WriteLn('Input: "C:"'); WriteLn('SysUtils.ExpandFileName : ', SysUtils.ExpandFileName('C:')); WriteLn('WideString ExpandFileName: ', ExpandFileName('C:')); WriteLn('AnsiString ExpandFileName: ', ExpandFileNameA('C:')); WriteLn('Fixed Buffer Size ExpandFileName: ', ExpandFileName3('C:')); WriteLn; WriteLn('SetCurrentDirectory to "C:\Programme\"'); SetCurrentDirectory('C:\Programme\'); WriteLn; WriteLn('Input: "C:"'); WriteLn('SysUtils.ExpandFileName : ', SysUtils.ExpandFileName('C:')); WriteLn('WideString ExpandFileName: ', ExpandFileName('C:')); WriteLn('AnsiString ExpandFileName: ', ExpandFileNameA('C:')); WriteLn('Fixed Buffer Size ExpandFileName: ', ExpandFileName3('C:')); ReadLn; end. ach mensch, wo kommt denn das alles jetzt her o.O nja, wie gesagt, das ist schon seit DOS-Zeiten so, aber warum es nicht dokumentiert ist ... k.A. ... sowas hat man wohl einfach zu wissen. PS: "C:" ist sozusagen ein relativer Pfadbezeichner ... hier allerdings auf das Laufwerk bezogen und du weißt ja bestimmt selber, wie vorsichtig man mit relativen Pfaden in seinem Programm sein soll. :zwinker: PSS: der OpenDialog ändert auch öfters mal das aktuelle Verzeichnis ... drum hatte ich den vorhin erwähnt ... hattest du dein Programm wärend des öffnen des Dialogs laufen lassen, oder danach nochmal neu gestartet? Bei Letzerem könnte Delphi ja nochmal dazwischengehn und den Pfad erneut setzen. |
Re: C: = C:\Windows\System32
Ja, vielen Dank für den ganzen Aufwand. :dp: Ich werde darüber einen Artikel verfassen. :wall:
|
Re: C: = C:\Windows\System32
Es geht noch weiter.
Für jedes einzelne Laufwerk, auf dem man SetCurrentDirectory verwendet, merkt sich dies Windows und leitet "x:" dann auf den dort eingestellte Pfad. |
Re: C: = C:\Windows\System32
Hallo,
Zitat:
x: ist quasi der Platzhalter für das gerade "zufällig" auf dem entsprechenden Laufwerk aktuelle Verzeichnis. So kannst Du zwischen z. B.
|
Re: C: = C:\Windows\System32
Die aktuellen (bzw. Arbeits-)Verzeichnisse der jeweiligen Laufwerke stehen sogar in (versteckten) Umgebungsvariablen:
Delphi-Quellcode:
WriteLn(GetEnvironmentVariable('=C:'));
WriteLn(GetEnvironmentVariable('=D:')); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz