Einzelnen Beitrag anzeigen

bepe

Registriert seit: 17. Okt 2006
119 Beiträge
 
#7

AW: Diverse Probleme mit Strings, SetLength und SizeOf

  Alt 1. Mai 2017, 17:12
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.

mfg,
bp
  Mit Zitat antworten Zitat