Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Langen Pfadnamen ermitteln? (https://www.delphipraxis.net/121833-langen-pfadnamen-ermitteln.html)

MisterSonic 5. Okt 2008 17:11


Langen Pfadnamen ermitteln?
 
Hallo,

ich hoffe ich Poste hier im richtigen Bereich .... wenn nicht... verschiebt's einfach Gnadenlos :))

Ich lese auf dem Weg die TEMP-Variable aus
Delphi-Quellcode:
SysUtils.GetEnvironmentVariable('temp');
hier erhalte ich "C:\DOKUME~1\......" zurück, ich würde das gern in den langen Namen umwandeln lassen ...also "C:\Dokumente und Einstellungen\......"

hab hier schon mal noch "Dateiname" und "langer Dateiname" gesucht aber nichts brauchbares gefunden. Hoffe ihr könnt mir helfen.

MfG patrick.

DeddyH 5. Okt 2008 17:16

Re: Langen Pfadnamen ermitteln?
 
Statt umständlich den langen Pfadnamen zusammenzusuchen könntest Du doch auch auf GetTempPath zurückgreifen, oder?

Luckie 5. Okt 2008 17:17

Re: Langen Pfadnamen ermitteln?
 
Zitat:

Zitat von MisterSonic
hab hier schon mal noch "Dateiname" und "langer Dateiname" gesucht aber nichts brauchbares gefunden. Hoffe ihr könnt mir helfen.

Hm, und warum finde ich sofort was brauchbares? Mit Hilfe der Suche nach [dp]lamge dateiname[7dp] hab eich das gefunden: http://www.delphipraxis.net/internal...=630991#630991 Nun, und wie heißt wohl die gegenteilige Funktion?

DeddyH 5. Okt 2008 17:35

Re: Langen Pfadnamen ermitteln?
 
Zitat:

Zitat von Luckie
Nun, und wie heißt wohl die gegenteilige Funktion?

Das wüsste ich auch gern. Ich hab mir vor Jahren damit beholfen, den ganzen Pfad zu zerlegen, das jeweilige Verzeichnis zu suchen und dann aus FindData den langen Namen zu ermitteln.

Luckie 5. Okt 2008 17:40

Re: Langen Pfadnamen ermitteln?
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Luckie
Nun, und wie heißt wohl die gegenteilige Funktion?

Das wüsste ich auch gern.

Hmpf. :roll: MSDN-Library durchsuchenGetLongPathname

DeddyH 5. Okt 2008 17:44

Re: Langen Pfadnamen ermitteln?
 
Kennt meine Hilfe noch gar nicht.
[edit] Geht ab Win98. Und ich hab mir diese Mühe gemacht :wall: [/edit]

MisterSonic 5. Okt 2008 20:14

Re: Langen Pfadnamen ermitteln?
 
...also steht in meiner Hilfe auch nich .... welche Unit muss ich denn einbinden damit das funzt...... ?

lg Patrick.

smallsmoker 5. Okt 2008 20:55

Re: Langen Pfadnamen ermitteln?
 
guck mal hier vorbei !

p.s.: ach und hier

Luckie 6. Okt 2008 08:23

Re: Langen Pfadnamen ermitteln?
 
Ich habe es doch schon extra verlinkt. Natürlich steht es nicht in der Delphihilfe, es ist ja auch eine Windows Funktion. Und wenn sie in der Windows.pas noch nicht deklariert ist, muss man das selber nachholen.

RWarnecke 6. Okt 2008 10:03

Re: Langen Pfadnamen ermitteln?
 
Dieses wäre auch noch eine Variante : (ist nicht von mir !!)
Delphi-Quellcode:
(* ---------------------------------------------
   Convert short DOS-style path to long path
   --
   Required units: ShlObj, ActiveX
--------------------------------------------- *)

function short_to_long_Path(ShortPathName : String) : String;
var
   PIDL: PItemIDList;
   Desktop: IShellFolder;
   WidePathName: WideString;
   AnsiPathName: AnsiString;
begin
     Result := ShortPathName;

     if Succeeded(SHGetDesktopFolder(Desktop)) then
     begin
          WidePathName := ShortPathName;
          if Succeeded(Desktop.ParseDisplayName(0, nil, PWideChar(WidePathName), ULONG(nil^), PIDL, ULONG(nil^))) then
          begin
               try
                  SetLength(AnsiPathName, MAX_PATH);
                  SHGetPathFromIDList(PIDL, PChar(AnsiPathName));
                  Result := PChar(AnsiPathName);
               finally
                      CoTaskMemFree(PIDL);
               end;
          end;
     end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz