// 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;

 


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke