// Ordner- bzw.
Dateinamen werden in Displaybezeichnung gezeigt
//
(ähnlich der
Adresszeile im Explorer).
// Getestet mit D2010 unter
Win7
uses Shellapi;
function ExplorName(Path: String; Variante: Boolean): String;
var
S, Z: string;
ps: Integer;
SFI: TShFileInfo;
begin
if Integer(GetFileAttributes(PChar(Path))) = -1 then
begin
Result := 'Path existiert nicht';
exit;
end
else
Result := '';
S := Path;
if Variante then
Z := '\'
else
Z := ' > ';
repeat
SHGetFileInfo(PChar(S), 0, SFI, sizeof(SFI), SHGFI_DISPLAYNAME);
if (Result <> '') then
begin
if (length(S) > 2) or not Variante then
Result := String(SFI.szDisplayName) + Z + Result;
end
else
Result := SFI.szDisplayName;
ps := lastdelimiter('\', S);
if ps <> 0 then
delete(S, ps, MaxInt)
else
begin
if Variante then
Result := Copy(Path, 1, 3) + Result;
break;
end;
until FALSE;
end;
// Beispielaufruf
procedure TForm1.Button1Click(Sender: TObject);
var
Pfad: string;
begin
Pfad := 'C:\Users\DBR\Documents';
ShowMessage(ExplorName(Pfad, FALSE));
// Ergibt:
// 'Lokaler Datenträger (C:) > Benutzer > DBR > Eigene Dokumente'
end;
// Variante
procedure TForm1.Button2Click(Sender: TObject);
var
Pfad: string;
begin
Pfad := 'C:\Users\DBR\Documents';
ShowMessage(ExplorName(Pfad, TRUE));
// Ergibt:
// 'C:\Benutzer\DBR\Eigene Dokumente'
end;
|