Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.650 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dateipfad mit \..\ auswerten

  Alt 8. Nov 2011, 22:50
Das gibt es alles schon fertig. Insbesondere werden die .. Stellen ja vermutlich durch eine Kombination zweier Pfade kommen. Das geht jedenfalls in beiden Fällen direkt über die API:
Delphi-Quellcode:
function PathCombine(lpszDest: PChar; const lpszDir, lpszFile: PChar): PChar; stdcall; external 'shlwapi.dllname 'PathCombineW';
function PathCombineA(lpszDest: PAnsiChar; const lpszDir, lpszFile: PAnsiChar): PAnsiChar; stdcall; external 'shlwapi.dll';
function PathCombineW(lpszDest: PWideChar; const lpszDir, lpszFile: PWideChar): PWideChar; stdcall; external 'shlwapi.dll';

function GetCombinedPath(const BasePath, RelativePath: string): string;
begin
  SetLength(Result, MAX_PATH);
  PathCombine(PChar(Result), PChar(ExtractFilePath(BasePath)), PChar(RelativePath));
  SetLength(Result, StrLen(PChar(Result)));
end;

procedure TForm140.FormCreate(Sender: TObject);
begin
  ShowMessage(GetCombinedPath('c:\program files\..\test\', '')); // c:\test\
  ShowMessage(GetCombinedPath('c:\program files\', '..\xyz\hallo.txt')); // c:\xyz\hallo.txt
end;
Wichtig ist, dass im ersten Pfad (ggf. mit IncludeTrailingPathDelimiter angehängt) am Ende ein \ steht, wenn das ein Ordnername ist.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat