Programmiersprache Pascal

Datentyp STRING

Das Wort String steht für Zeichenkette.

In Pascal ist zu unterscheiden:

Bei Zeichenketten variabler Länge gibt es verschiedene Varianten, wie die aktuelle Länge der Zeichenkette erkannt wird:

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

Mit Hilfe der Compiler-Option $H kann festgelegt werden, ob das aus Turbo Pascal bekannte STRING als ShortString ($H-) oder als AnsiString ($H+) realisiert wird. Standard ist die Umsetzung als long string.


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.
Die Zählung der Positionen beginnt mit 1.

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

ReadStr    liest Daten von einer Zeichenkette
WriteStr   schreibt Daten auf eine Zeichenkette
Funktionen zum lexikographischen Vergleich von Zeichenketten
Eq         Lexikographisch gleich
Ge         Lexikographisch größer oder gleich
Gt         Lexikographisch größer
Le         Lexikographisch kleiner oder gleich
Lt         Lexikographisch kleiner
Ne         Lexikographisch verschieden
Weitere Funktionen zur Arbeit mit Zeichenketten
Length     ermittelt Länge einer Zeichenkette
Index      ermittelt Anfangsposition einer Teilzeichenkette
Substr     extrahiert eine Teilzeichenkette
Trim       entfernt abschließende Leerzeichen


P. Böhme, 09.07.1996