Wenn man sich mal bewußt ist, was diese 3 Byte wirklich bedeuten, dann kommt man gekürzt auf dieses:
Delphi-Quellcode:
ReadLn(myfile, a);
s := UTF8Decode(a);
if (s <> '') and (s[1] = #$FEFF) then delete(s, 1, 1);
So könnte man auch noch eine Prüfung einbauen, welche die Daten gleich noch mit prüft
Delphi-Quellcode:
ReadLn(myfile, a);
s := UTF8Decode(a);
if (s = '') or (a <> '') then s := a
else if (s <> '') and (s[1] = #$FEFF) then delete(s, 1, 1);
Hier würde dann die erste Zeile einer "
Ansi"-Datei oder einer UTF-8-kodierten Datei eingelesen.
(selbst UTF-8 ohne BOM würde halbwegs sicher erkannt)