Anbei ein kleines Testprogramm, das zeigt, dass Verzeichnisse mit Umlauten nicht richtig dargestellt werden, bzw. keine Files in diesen Verzeichnissen gesucht werden:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var
FS: TFileSearcher;
begin
Memo1.Clear;
FS := TFileSearcher.Create;
FS.OnFileFound := @FileFound;
Memo1.Lines.Add('Dateien im Programmverzeichnis:');
FS.Search(ExtractFilePath(ParamStr(0)), AllFilesMask, True);
Memo1.Lines.Add('');
Memo1.Lines.Add('Dateien im Unterverzeichnis "Dir_ÄÖÜ":');
FS.Search(ExtractFilePath(ParamStr(0)) + '\Dir_ÄÖÜ', AllFilesMask, True);
FS.Free;
end;
procedure TForm1.FileFound(FileIterator: TFileIterator);
begin
Memo1.Lines.Add(FileIterator.FileName);
writeln(UTF8ToSys(FileIterator.FileName));
end;
Ich habe für mich auch einen kleinen Patch geschrieben, der dieses Fehlverhalten hier beseitigt. Da aber die Konvertierung vom RawbyteString in einen UTF8String ein ziemliches Gewurstel ist, wollte ich fragen, ob jemand eine bessere Lösung hat?!
Code: Alles auswählen
PathInfo.Name := SysToUTF8(UTF8String(PathInfo.Name));
Bsp. und Patch anbei.
Interessieren tät mich auch, wie das Verhalten unter einem anderen OS ist, bzw. was die Konvertierung dort bewirkt.
EDIT: Dateien gelöscht, da sie, falls sie jemanden interessieren, auch vom Bugtracker geladen werden könnten.