Noch mal kurz zur Demonstration:
Ich habe mein Vista mal auf Japanisch umgestellt. Das hat beispielsweise im Dateisystem die für Vista typische Lokalisierung einiger Ordner zur Folge.
Wenn man nun mit den üblichen
API-Funktionen diese Namen ermitteln will, nimmt man einfach seinen alten Code. Dadurch, dass die korrekte
API-Funktion aufgerufen wird und sowohl Char als auch String
unicode-fähig sind, hat man wieder ein in sich konsistentes System:
Delphi-Quellcode:
(* Der Code ist nicht hübsch, aber er tut. *)
procedure TForm1.Button1Click(Sender: TObject);
var root : string;
sRec : TSearchRec;
fint : integer;
fInfo : TSHFileInfo;
begin
root:= 'c:\';
fint:= FindFirst( root+'*.*', faAnyFile, sRec );
while fint = 0 do
begin
SHGetFileInfo( PChar(root + srec.name), 0, fInfo, SizeOf(fInfo), SHGFI_DISPLAYNAME OR SHGFI_TYPENAME );
Memo1.lines.add( fInfo.szDisplayName + ' (' +fInfo.szTypeName+')' );
fint:= FindNext( sRec );
end;
FindClose( sRec );
end;
Ergebnis mit den Standard-Komponenten siehe Anhang.
Daniel R. Wolf
mit Grüßen aus Hamburg