![]() |
AW: ParamStr(1) unter Win7 falscher Pfad
Zitat:
|
AW: ParamStr(1) unter Win7 falscher Pfad
Vielleicht bin ich ja ein bisschen hitzegeschädigt, aber gibt nicht eigentlich
![]() Sherlock |
AW: ParamStr(1) unter Win7 falscher Pfad
Hi Sherlock,
ich hatte es zuerst auch falsch verstanden. ParamStr(0) gibt den vollständigen Programmpfad an, aber e-gon geht es um eine von Windows automatisch als ParamStr(1) übergebene aufzurufene Datei (wenn man halt eine Datei mit "Öffnen mit" im Explorer startet). |
AW: ParamStr(1) unter Win7 falscher Pfad
Ah! OK, dann kann auch ich das geschilderte Verhalten nicht bestätigen. Denn bei mir(*) heisst auch alles korrekt "C:\users\..."
Sherlock (*) mir= Win7 Prof 64bit SP1 |
AW: ParamStr(1) unter Win7 falscher Pfad
@Bbommel: Dein Mini-Programm scheint bei mir auch zu funktionieren - wenn Du statt der 3. die 2. Zeile meinst. Es steht jedenfalls zweimal C:\Users\... da.
Jetzt verstehe ich aber gar nichts mehr! Ich nutze ebenfalls Delphi 2009 auf Win7 (64 Bit)... @Sherlock: ParamStr(0) gibt den vollständigen Programmname zurück und ab (1) bis (x) werden Parameter, die mit dem Programm aufgerufen werden, übergeben. Bei mir steht in ParamStr(1) der vollständige Name der Datei, die doppelt angeklickt wurde. |
AW: ParamStr(1) unter Win7 falscher Pfad
Ok, dank Eurer Hilfe konnte ich das Problem nun ausfindig machen. Es ist NICHT ParamStr(1) sondern eine Funktion namens ExtractLongFileName, die ich benutze um evtl. übergebene kurze Pfadnamen in lange umzuwandeln. Irgendwie scheint mein Code den Pfad von User auf Benutzer zu ändern...
Delphi-Quellcode:
function ExtractLongFileName(const FileName: string): string;
var FileInfo: TSHFileInfo; begin FillChar(FileInfo,SizeOf(FileInfo),#0); if SHGetFileInfo(PChar(FileName),0,FileInfo,Sizeof(FileInfo),SHGFI_DISPLAYNAME)<>0 then Result:= string(FileInfo.szDisplayName) else Result:= FileName; end; Aber vielen Dank für Eure Hilfe!!! |
AW: ParamStr(1) unter Win7 falscher Pfad
Musste Frage-Markierung noch entfernen...
|
AW: ParamStr(1) unter Win7 falscher Pfad
Das ist korrekt. Der Parameter SHGFI_DISPLAYNAME, den du dort benutzt, holt explizit den dem Benutzer angezeigten Pfad statt dem realen Pfad. ;-)
// EDIT: Was du wohl meintest ist die Funktion GetLongPathName: ![]() |
AW: ParamStr(1) unter Win7 falscher Pfad
Führt
![]() |
AW: ParamStr(1) unter Win7 falscher Pfad
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 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