Unterschiedliche String-Typen String ShortString AnsiString

Object Pascal im Detail - Datentypen www.delphi-treff.de 53

4.2. Datentypen

Jeder Variablen liegt in Object Pascal ein Typ zugrunde. Es gibt verschiedene Arten von Datentypen. Die meisten einfachen Datentypen sind bereits im Kapitel über Variablen beschrieben worden. Doch es gibt weitere. String ist der Datentyp, der Texte aufnimmt. Allerdings gibt es nicht nur einen String-Typ, sondern verschiedene.

4.2.1. Strings

4.2.1.1. Unterschiedliche String-Typen

In Delphi gibt es verschiedene Möglichkeiten, Strings zu deklarieren:  String  ShortString  AnsiString  UnicodeString  UTF8String  WideString

4.2.1.2. String

Der Datentyp „String ist kein eigener Datentyp, sondern nur ein Alias, dessen wirklicher Typ sich abhängig von der Delphi-Version unterscheidet. Sofern man keine besonderen Gründe hat, wird empfohlen, immer „“t i g als Datentyp für Texte zu verwenden. Der Alias steht für:  ShortString in Delphi 1  AnsiString Delphi 2 bis 2007  UnicodeString seit Delphi 2009 var text: String; Die älteren String-Typen ShortString, AnsiString stehen nach wie vor auch in neuen Delphi-Versionen zur Verfügung. Nur reicht für ihre Verwendung nicht mehr die Angabe „String , sondern es muss konkret z.B. „ShortString angegeben werden.

4.2.1.3. ShortString

Verwendet man unter Delphi 1 den Typ „String , meinte man den Datentyp „ShortString . Ein ShortString besteht maximal aus 255 Zeichen, für die statisch Arbeitsspeicher reserviert wird. Das bedeutet, dass auch 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