Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ParamStr(1) unter Win7 falscher Pfad (https://www.delphipraxis.net/162469-paramstr-1-unter-win7-falscher-pfad.html)

Phoenix 24. Aug 2011 12:48

AW: ParamStr(1) unter Win7 falscher Pfad
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1119217)
Zitat:

Zitat von e-gon (Beitrag 1119211)
... oder das System liegt nicht auf C: sondern D: ...

Dann zeig mal das du ein Win7-System auf D:\ bekommst. AFAIK wird hier auf jedenfall die Laufwerke so sortiert das Win7 unter C:\ liegt.

Das System vielleicht nicht, aber die Benutzer-Ordner kann man beliebig verschieben.

Sherlock 24. Aug 2011 13:04

AW: ParamStr(1) unter Win7 falscher Pfad
 
Vielleicht bin ich ja ein bisschen hitzegeschädigt, aber gibt nicht eigentlich Delphi-Referenz durchsuchenParamStr(0) den vollständigen Dateinamen an?

Sherlock

Bbommel 24. Aug 2011 13:10

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).

Sherlock 24. Aug 2011 13:18

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

e-gon 24. Aug 2011 13:19

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.

e-gon 24. Aug 2011 13:26

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!!!

e-gon 24. Aug 2011 13:31

AW: ParamStr(1) unter Win7 falscher Pfad
 
Musste Frage-Markierung noch entfernen...

jaenicke 24. Aug 2011 13:32

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:
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx

DeddyH 24. Aug 2011 13:35

AW: ParamStr(1) unter Win7 falscher Pfad
 
Führt MSDN-Library durchsuchenGetLongPathName nicht auch zum gewünschten Ziel?

Stevie 24. Aug 2011 13:44

AW: ParamStr(1) unter Win7 falscher Pfad
 
Zitat:

Zitat von Sherlock (Beitrag 1119271)
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

Die Unterschiede bei euch kommen übrigens von der Sprache, in der Windows installiert ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.
Seite 2 von 3     12 3      

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