Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: Unicode strings

  Alt 8. Aug 2014, 14:04
RawByteString ist doch nur ein Alias für AnsiString?

Wobei mich das wundert. Ich dachte AnsiString ist in neueren Versionen genau das, was in füheren Versionen String war?
String war früher ein Alias für den AnsiString
und jetzt ist es ein Alias für den UnicodeString.
Genauso, wie früher (vor Win64) der Integer ein Alias für den LongInt (Win32) und davor für den SmallInt (Win16) war, also das, was jetzt der NativeInt ist, da man bescheuerter Weise den Integer eingefrohren hat. (aus Angst vor Problemen bei der Umstellung auf 64 Bit, aufgrund von schrottig programmierten Codes)

Ein AnsiString ist mit der akuellen Codepage des Systems/Programms (CP_ACP),
RawByteString ist ein AnsiString ohne CodePage,
UTF8String ist ein AnsiString mit der CodePage CP_UTF8
und AnsiString(123) hat die CodePage 123.
Der ShortString ist immer CP_ACP. (das ist ein Rerord und kein Long-String, so wie UnicodeString, AnsiString und Co.)

Und ja, Delphi konvertiert die Strings untereinander.
Wenn man einen UnicodeString an einen UTF8String übergibt, dann wird der Inhalt nach UTF-8 konvertiert, also anhand der CodePage des AnsiString.
Umgekehrt genauso.

Darum gibt es auch den RawByteString, da dieser die "ANSI"-Zeichen, im unteren Byte-Bereich (0 bis 255) des Unicode 1:1 kopiert, ohne zu übersetzen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Aug 2014 um 14:08 Uhr)
  Mit Zitat antworten Zitat