UnicodeString UTF8String Strings

Object Pascal im Detail - Datentypen www.delphi-treff.de 54 wenn nur 1 Zeichen in ShortString enthalten ist, trotzdem Speicher für 255 Zeichen belegt wird. Im ersten Byte Index 0 des Strings befindet sich die Längenangabe. Somit liegt das erste Zeichen an Position 1. Die Länge eines ShortStrings kann man auch selbst angeben: var text: String[10]; Wird keine Länge vorgegeben, wird 255 verwendet.

4.2.1.4. AnsiString

Mit der Umstellung auf 32 Bit mit Delphi 2 fiel die 255-Zeichen-Grenze. Strings können nun bis zu 2 GB groß werden. Im Gegensatz zum ShortString wird deshalb nun nicht mehr die komplette Größe im Speicher reserviert, sondern nur so viel, wie momentan benötigt wird. Ist der String leer, so verwendet er keinen Speicher. Für jedes Zeichen des Strings steht 1 Byte zur Verfügung, es kann also nur der ANSI-Zeichensatz verwendet werden. Der AnsiString ist ebenfalls 1-basiert, um zum ShortString kompatibel zu bleiben. Will man also eine Schleife über alle Zeichen des Strings implementieren, ist zu beachten, dass das erste Zeichen sich nicht an Position 0, sondern 1 befindet. var text: AnsiString;

4.2.1.5. UnicodeString

UnicodeStrings wurden mit Delphi 2009 eingeführt. Sie enthalten Unicode-Zeichen UTF-16 und können somit wesentlich mehr Schriftzeichen abbilden als ANSI oder gar ASCII, z.B. arabische und chinesische Zeichen. Ansonsten gleicht ihr Verhalten dem Typ AnsiString. Ihre Länge ist nur vom zur Verfügung stehenden Arbeitsspeicher begrenzt. Wie bei allen String-Typen in Delphi beginnt die Zählung der Zeichen hier mit 1 und nicht wie sonst in der Programmierung üblich mit 0. var text: UnicodeString;

4.2.1.6. UTF8String

Der UTF8String ist ebenfalls neu in Delphi 2009. Wie der Name sagt, sind seine Zeichen UTF-8-kodiert, während der UnicodeString mit UTF-16 arbeitet. Die String-Typen sind zuweisungskompatibel. Exkurs: Zeichensätze – was ist der Unterschied zwischen ASCII, ANSI, UTF-8 und UTF-16? Die Entwicklung der Computer kommt aus den USA. Und da Speicher auf frühen Rechnern knapp war, enthielt der erste Zeichensatz nur die in den USA üblichen Zeichen und Ziffern, also auch keine Umlaute. Dafür benötigte man nur 7 Bit. Dieser Standard heißt ASCII American Standard Code for Information Interchange und kann 128 Zeichen abbilden. Als sich Computer auch in Europa verbreiteten, wuchs der Bedarf nach weiteren Zeichen. So entstand der ANSI-Zeichensatz benannt nach dem American National Standards Institute, offiziell ISO 8859. Er benötigt Object Pascal im Detail - Datentypen www.delphi-treff.de 55 1 Bit mehr, also 8 Bit =1 Byte, und kann dafür 256 Zeichen darstellen. Die ersten 128 Zeichen entsprechen dem ASCII-Zeichensatz. Die restlichen 128 Plätze werden je nach Region unterschiedlich verwendet. Deshalb gibt es verschiedene Sets wie ISO 8859- „Lati - , das i Westeu opa zu Ei satz ko t. Es gibt also verschiedene ANSI-Zeichensätze, aber keinen, der alle Zeichen enthält. Deshalb wurde seit den 1990er Jahren der Unicode-Zeichensatz entwickelt, der Ende 2010 bereits in Version 6 erschienen ist. Dieser enthält asiatische und arabische Zeichensätze, aber auch viele andere Zeichen wie Währungssymbole oder die Blindenschrift Braille. Der Unicode-Standard beinhaltet mittlerweile mehr als 100.000 Zeichen. Schriftdateiformate wie TrueType können jedoch nur maximal 65.536 Zeichen enthalten, so dass es momentan nicht möglich ist, alle Unicode-Zeichen auf einem PC darzustellen. Zur Codierung von Unicode-Zeichen gibt es verschiedene Formate: Bei UTF-16 besteht jedes Zeichen aus 2 oder 4 Bytes. UTF-8 dagegen verwendet bei Zeichen, die sich auch mit nur 1 Byte darstellen lassen, nur 1 Byte. Deshalb sind ASCII-Strings kompatibel zu UTF-8. Wird der ASCII-Bereich überschritten, verwendet UTF- 8 automatisch mehr Bytes. Ein UTF-8-Zeichen kann maximal 4 Bytes lang werden.

4.2.1.7. Nullterminierte Strings