Ich möchte in einer Routine alle Dateien überprüfen. Doch gibt es einige Dateien die haben Zeichen wie "ي". Also rigend welche arabische Buchstaben.
FindFirst hat die Datei als "???????.xxx" eingelesen (in sr.Name). Dann habe ich es auf FindFirstUTF8 umgestellt, und es geht dennoch nicht. In sr.Name stehen die arabischen Umlaute nicht drin.
Ich habe auch den Dateiname mit SysToUTF8(sr.Name) gewandelt, aber hilft auch nicht.
Was mache ich falsch?
Oder wie geht das richtig?
Code: Alles auswählen
procedure TForm1.DoTest(sDir: String);
Var sr: TSearchRec;
s: String;
sl: TStringList;
Begin
sl := TStringList.Create;
If FindFirstUTF8(sDir + PathDelim + '*.*',faAnyFile, sr) = 0 Then
Begin
Repeat
s := Copy(sr.Name, Length(sr.Name) - 4, 4);
If SameText(s, '.htm') Then
Begin
s := sDir + PathDelim + SysToUTF8(sr.Name); // <--- hier Dateiname = '???????.xxx'
sl.LoadFromFile(s); // <----- Hier Fehler
end Else If (sr.Attr And faDirectory) = faDirectory Then
Begin
If (sr.Name <> '.') And (sr.Name <> '..') Then
DoTest(sDir + PathDelim + sr.Name);
end;
until FindNextUTF8(sr) <> 0;
end;
sl.Free;
FindClose(sr);
End;