In Pascal ist zu unterscheiden:
Standard Pascal
Eine Zeichenkettenvariable der Länge n wird vereinbart als
VAR str : PACKED ARRAY [1..n] OF CHAR;Ein Datentyp STRING ist nicht vorhanden.
Turbo Pascal
Eine Zeichenkettenvariable der Länge n kann alternativ zur Standard Pascal Variante vereinbart werden als
VAR str : STRING[n];Für n ist maximal 255 zulässig. Die Längenangabe kann entfallen, in diesem Fall wird die Maximallänge angenommen.
Das i-te Zeichen der Zeichenkette str wird mit str[i]
angesprochen.
str[0] verschlüsselt die Länge der Zeichenkette.
Für die Manipulation von Variablen vom Typ STRING gibt es den Verkettungsoperator + sowie eine Reihe von speziellen Prozeduren.
Achtung:
Der Turbo Pascal String unterscheidet sowohl in der syntaktischen Handhabung
als auch in der internen Darstellung vom String in Extended Pascal !
Ferner kann - ab der Version 7.0 - mit Null-terminierten Zeichenketten gearbeitet werden:
VAR nstr : ARRAY [0..n] OF CHAR;Gespeichert werden können Zeichenketten mit maximal n Zeichen, die zusätzliche n+1-te Komponente des Arrays steht für das abschließende Null-Zeichen zur Verfügung.
Mit PChar kann ein Zeiger auf eine Null-terminierte Zeichenkette vereinbart werden.
Beispiel:
VAR s : ARRAY[0..10] OF CHAR;
p : PChar;
StrCopy(s, 'Ottokar');
p1 := @s1;
Writeln(s, ' ', p^); { liefert Ottokar O }
Delphi
Delphi besitzt die Typvarianten
XL Pascal
Eine Zeichenkettenvariable der Länge n kann alternativ zur Standard Pascal Variante vereinbart werden als
VAR str : STRING(n);Für n ist im Standardfall maximal 255 zulässig, im Höchstfall kann n den Wert 32767 annehmen. Die Längenangabe kann entfallen.
Das i-te Zeichen der Zeichenkette str wird mit str[i] angesprochen.
Für die Manipulation von Variablen vom Typ STRING gibt es den Verkettungsoperator + bzw. || sowie eine Reihe von speziellen Prozeduren.
Extended Pascal
Eine Zeichenkettenvariable der Länge n kann alternativ zur Standard Pascal Variante vereinbart werden als
VAR str : STRING(n);Zeichenketten sind intern folgendermaßen aufgebaut:
STRING = RECORD
capacity : INTEGER;
length : INTEGER;
string : PACKED ARRAY[1..capacity] OF CHAR;
END;
Syntaktisch kann eine Zeichenkette jedoch nicht wie ein Record behandelt
werden !
Teilzeichenketten
Teilbereiche einer Zeichenkette können in Extended Pascal wie folgt angesprochen werden:
[start..stop]start gibt dabei die Position des Anfangszeichens, stop die Position des Endzeichens der Teilzeichenkette innerhalb der Orginalzeichenkette an.
Beispiel:
VAR s : STRING(10); s := 'abcdefghij'; s[2..3] := 'BC'; Writeln(s[2..8]);
Gnu Pascal
Gnu Pascal beruht auf Extended Pascal, dies gilt auch für den Umgang mit Zeichenketten.
Daneben läßt Gnu Pascal bei Deklarationen auch die Turbo Pascal
Syntax zu.
Beispiel:
VAR s1 : STRING(20); { Extended Pascal Syntax }
s2 : STRING[20]; { Turbo Pascal Syntax }
Literale
Zeichenkettenliterale sind in Apostrophe einzuschließen. Ein Apostroph innerhalb einer Zeichenkette läßt sich durch zwei aufeinanderfolgende Apostrophe darstellen.
Beispiele:
str1 := 'Pascal';
str2 := 'Wie geht''s ?'; { Apostroph in Zeichenkette }
str3 := ''''; { Apostroph }
str4 := ''; { leere Zeichenkette }
Wird bei einer Zuweisung die Maximallänge überschritten, so werden
die überzähligen Zeichen abgeschnitten, bei einer Unterschreitung
der Maximallänge wird die Zeichenkette mit Leerzeichen aufgefüllt.
Achtung:
Eine Zeichenkette der Länge 1 unterscheidet sich in der internen
Darstellung von einem Zeichen (Datentyp CHAR) !
Standard-Unterprogramme zur Arbeit mit Strings
Extended Pascal
Konvertierungen in das Textformat bzw. aus dem Textformat
Funktionen zum lexikographischen Vergleich von ZeichenkettenReadStr liest Daten von einer Zeichenkette WriteStr schreibt Daten auf eine Zeichenkette
Weitere Funktionen zur Arbeit mit ZeichenkettenEq Lexikographisch gleich Ge Lexikographisch größer oder gleich Gt Lexikographisch größer Le Lexikographisch kleiner oder gleich Lt Lexikographisch kleiner Ne Lexikographisch verschieden
Length ermittelt Länge einer Zeichenkette Index ermittelt Anfangsposition einer Teilzeichenkette Substr extrahiert eine Teilzeichenkette Trim entfernt abschließende Leerzeichen