Moin zusammen,
ich habe bei der Umstellung von 10.3.3 auf 10.4.1 ein Problem mit Umlauten erkannt. Es geht um das Einlesen eines Streams mit Benutzung von tReader. In System.Classes.pas steht in der 10.3.3 für den Typ "vaString" folgendes:
Code:
vaString:
begin
Read(L, SizeOf(Byte));
SetLength(LResult, L);
Read(LResult, L);
Result := TEncoding.Default.GetString(LResult);
end;
In 10.4.1 steht folgendes für diesen Typ:
Code:
vaString:
begin
Read(S[0], SizeOf(Byte));
Read(S[1], NativeInt(S[0]));
Result := UTF8IdentToString(@S);
end;
Die Variable "S" ist dort als ShortString definiert und ein Umlaut wie "ä" (hex E4) kommt so nicht mehr korrekt an. Die Dateien behaupten, sie wären als
ANSI gespeichert. Und ReadValue gibt für die Strings "vaString" an.
Ich möchte nicht in der System.Classes rumrühren, gibts einen Workaround oder irgendeine globale Definition, die das korrigiert? Ich meine jetzt nicht den String Byte für Byte durchgehen und die Umlaute hartcodiert umzustellen auf einen anderen Wert.
Weiß jemand, warum das umgestellt wurde?
Grüße
Michael