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