Zeichenketten sind eindimensionale Felder vom Typ Char,
allerdings mit besonderer Behandlung. Die einzelnen Zeichen werden ab der
Positionen 1 abgelegt. Die aktuelle Zeichenkettenlänge wird an der
Position 0 abgelegt. In diesem Fall kann die maximale Länge
255 Zeichen sein. Der Speicherbedarf ist 256 Byte. Je nach
Zuweisung einer Zeichenkette wird das Längenbyte (Position 0) automatisch
gesetzt. In Delphi heißt dieser Typ ShortString. Bei der
Deklaration können auch kleinere maximale Längen als 255 festgelegt werden.
Hierzu wird die maximale Länge in eckiger Klammer festgelegt:
string[50] belegt 51 Byte im Speicher, 50 Zeichen und
das Längenbyte. Einer Zeichenkettenvariable kann eine Konstante oder ein
Ausdruck direkt zugewiesen werden, dies muss also nicht wie bei Feldern
elementeweise geschehen. Nur hierbei wird das Längenbyte angepasst.
Z.B. Wort := 'Haus'.
Allerdings können die einzelnen Zeichen einer Zeichenkette wie bei einem
Feld bearbeitet werden: Wort[3] würde nach obiger Zuweisung 'u' liefern.
Die Zuweisung Wort[1]:='M' würde den Inhalt von Wort zu 'Maus' ändern.
Beim direkten Zugriff kann auf jede Position bis zur maximalen Länge
zugegriffen werden. Es bleibt dem Programmierer selbst überlassen,
festzustellen ob er sich im gültigen Bereich eines Eintrags befindet.
Z.B. kann mit der length-Funktion die aktuell gültige Länge des
Inhalts ermittelt werden.
Wird bei einer kleineren maximalen Längenvereinbarung ein zu langes Wort
zugewiesen, werden die überzähligen Zeichen abgeschnitten.
In Delphi gibt es den generischen Typ string. Dieser ist
kompatibel zum Typ AnsiString falls die Compilerdirektive {$H+} aktiv ist,
was voreingestellt ist. Bei {$H-} ist string kompatibel zu
ShortString.
Der Typ AnsiString kann 231 Zeichen speichern. Der Speicher wird hierbei dynamisch von 4 Byte bis 2 GByte belegt.
| Zur Bearbeitung von Zeichenketten existieren besondere Funktionen und Prozeduren (Auswahl): | |
| function Concat
(s1[,s2,s3,..,sn]:string):string (hierfür kann auch der + - Operator verwendet werden) |
Fügt die Zeichenketten s1, s2, ... aneinander |
| function Copy(s:string; Stelle,Anzahl:Integer):string | Liefert Anzahl Zeichen der Zeichenkette s ab der Position Stelle |
| function Pos(Teilstring,s:string):Byte | Ermittelt die Position, ab der Teilstring in s enthalten ist |
| function Length(s:string):Integer | Ermittelt die aktuelle Länge von s |
| function LowerCase(s:string):string | Wandelt alle Zeichen von s in Kleinbuchstaben um |
| function UpperCase(s:string):string | Wandelt alle Zeichen von s in Großbuchstaben um |
| procedure Insert(Quelle:string; var s:string; Stelle:Integer) | Fügt Quelle ab Position Stelle in die Zeichenkette s ein |
| procedure Delete(var s:string; Stelle,Anzahl:Integer) | Löscht Anzahl Zeichen der Zeichenkette s ab der Position Stelle |
[Index] [Zurück/Datentypen 5] [Fortsetzung/Datentypen 7]
Autor: Jürgen Dehmer
Letzte Änderung: 01. November 2000