Hallo zusammen,
nach langer Zeit habe ich mich entschlossen, mein D2007 durch XE5 abzulösen. Bislang haben mich mangelnde Zeit und die Unicode Thematik davon abgehalten.
Das Unicode thema ist nun zu einem Problem?! geworden, das ich zwar lösen konnte, allerdings bin ich mir nicht sicher, ob das der ideale weg ist.
Folgender Code aus D2007 (simplifiziert zu darstellungszwecken)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var LStream: TStringStream; LString: string; begin LString := 'Dies ist ein test'#13#10;
LStream := TStringStream.create(''); LStream.WriteBuffer(LString[1], Length(LString)); Memo1.Text := LStream.DataString end; |
Wenn ich diesen Code mit XE5 kompiliere, wird nur das erste Zeichen im Memo angezeigt. Im DataString ist hinter jedem Char des Quellstrings ein '#0' eingefügt worden.
Nach etwas recherche habe ich den obigen Code wie folgt geändert
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var LStream: TStringStream; LString: string; begin LString := 'Dies ist ein test'#13#10;
LStream := TStringStream.create('', TEncoding.UniCode); LStream.WriteBuffer((Pointer(s)^, Length(s) * SizeOf(Char)); Memo1.Text := LStream.DataString end; |
Nun ist die Anzeige im Memo ok, allerdings weiß ich nicht, ob ich mir irgendwelche Folgeprobleme reingeholt habe.
Wie ist denn Eure Erfahrung? Was habt ihr geändert? Würdet Ihr das auch so lösen?
Vielen Dank im Voraus.
viele GRüße
CenBells
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.