Die auszulesende Zeichenkette ist 32 Zeichen lang. SizeOf(Char) gibt aber 2 und 2*32 ist 64. Wieso funktioniert das trotzdem?
Wenn ich 16*SizeOf(Char) verwende funktioniert es nicht mehr und es kommt Chinesisch als Ergebnis.
Eine letzte Frage bestünde darin, warum mein TFileStream.Write denn eigentlich nach jedem Zeichen ein NUL-Zeichen speichert
Der Standardstring ist UTF16 codiert. Also pro Zeichen 2 Byte, bei 32 Zeichen sind das 64 Byte. Da du keine "Sonderzeichen" verwendest, wird das zweite Byte nicht benötigt (daher NUL).
Du hast zwei Möglichkeiten:
- Arbeite dich ins Thema ein, sonst hast du keine Freude beim Lesen und Schreiben von Texten.
- Verzichte auf
Unicode. Benutze nur AnsiString und AnsiChar und hoffe auf das Beste.
Wegen dem roten Kasten:
Bei
Unicode kann ein Zeichen zwei Byte belegen, muss aber nicht. Das ist abhängig von der Kodierung.