Einzelnen Beitrag anzeigen

michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#1

tReader-Objekt unter 10.4.1

  Alt 5. Okt 2020, 16:27
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
  Mit Zitat antworten Zitat