Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#13

AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad

  Alt 23. Apr 2016, 18:45
Danke für die Zusatzinfos!

Ich habe mir das jetzt mal so zusammengebastelt, dass ich eine universelle Funktion habe, um Pfade vollständig umzuwandeln.

Falls es noch jemand brauchen kann:

Delphi-Quellcode:
function ExpandPath(const sPath: String): String;
var
  chrBuffer: LPWSTR;
  chrOut: array[0..1023] of Char;
  sGUID, sRest: String;
  GUID: TGUID;
begin
  Result := sPath;

  if AnsiStartsText('{', Result) and isWinVistaOrLater then
  begin
    sGUID := Copy(Result, 0, Pos('}',Result)); //z.B. '{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}' = 'C:\Program Files (x86)'
    sRest := Copy(Result, Pos('}',Result)+1, Length(Result));
    try
      GUID := StringToGUID(sGUID);
      if Succeeded(SHGetKnownFolderPath(GUID, 0, 0, chrBuffer)) then
      begin
        try
          Result := chrBuffer + sRest;
        finally
          CoTaskMemFree(chrBuffer);
        end;
      end;
    except
    end;
  end;

  if AnsiContainsText(Result,'%') then
  begin
    if ExpandEnvironmentStrings(PChar(Result), chrOut, 1024) > 0 then
      Result := chrOut;
  end;

  Result := Trim(Result);
end;
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (23. Apr 2016 um 19:14 Uhr) Grund: Korrektur
  Mit Zitat antworten Zitat