11. Anlage
 
zurück

11.1.3.4 Zeichenkettenbehandlung bei begrenzter Zeichenkettenlänge


Das Paket Ada.Strings.Bounded ist ein generisches Paket, das den Typ Bounded_String und dazugehörige Funktionen definiert. Die maximale Länge eines Objekts eines Bounded_String-Typs wird während der Instantiierung festgelegt. Die Unterprogramme für Zeichenketten mit fester Länge gelten in ähnlicher Form auch für Zeichenketten mit begrenzter Länge. Einige dieser Unterprogramme haben ein anderes Verhalten, um der größeren Flexibilität nachzukommen. Zusätzlich existieren noch einige Konstruktions- und Auswahloperationen.

Werte verschiedener Bounded_String-Typen können einander nicht zugewiesen und auch nicht miteinander verglichen werden.

Im Paket vereinbarte Typen und Objekte

1) Max_Length - ist eine Konstante und enthält die maximale Länge für Zeichenketten, die mit dem Bounded_String-Typ
bearbeitet werden können.

2) Null_Bounded_String - Eine leerer Zeichenkette des Bounded_String-Typs.

3) Bounded_String - ist Typ für Zeichenketten mit begrenzter Länge.

4) Length_Range - ist ein Untertyp von NATURAL mit dem Bereich, der die maximale Größe von 0 .. Max_Length angibt.


Die Vergleichsoperatoren "=", "<", "<=", ">", ">=" haben die gleiche Wirkung wie die Funktionen für String-Typen. Bounded_String-Zeichenketten können auch mit String-Zeichenketten verglichen werden.

Die Unterprogramme zum Suchen (Index, Count, Find_Token), zum Übersetzen (Translate), zum Umformen (Replace_Slice, Insert, Overwrite, Delete) und zur Auswahl (Trim, Head, Tail) haben die gleiche Wirkung wie die gleichnamigen Unterprogramme für String-Typen. Alle Funktionen, bei denen die Möglichkeit besteht, daß die Zeichenkette die maximale Länge des Bounded_String-Typs überschreitet, haben einen Parameter (Typ Truncation) zur Festlegung, ob die Zeichenkette abgeschnitten werden soll, oder ob die Ausnahme Length_Error ausgelöst werden soll.

Für die Funktion "*" existieren jetzt drei Versionen, zum Vervielfältigen von Character, String und Bounded_String. Wenn die Zeichenkette durch die Vervielfältigung zu lang wird, wird immer die Ausnahme Length_Error ausgelöst.

Die zusätzliche Funktion Replicate (auch für Character, String und Bounded_String) ist eine Variante der Funktion "*" und hat zusätzlich den Parameter Drop : in Truncation := Error, wodurch ein Abschneiden der zu lang gewordenen Zeichenkette möglich wird.

Zusätzliche Funktionen für Bounded_String:
function Length (Source : in Bounded_String) return Length_Range;
Liefert die Länge der Zeichenkette "Source".
function To_Bounded_String(Source : in String;
Drop : in Truncation := Error)
return Bounded_String;

Liefert die Bounded_String-Version der Zeichenkette "Source".
function To_String (Source : in Bounded_String) return String;
Liefert die String-Version der Bounded_String-Zeichenkette "Source".
function Append (Left : in ...; Right : in ...;
Drop : in Truncation := Error) return Bounded_String;
Die Funktion Append liefert eine aus den Zeichen/Zeichenketten in "Left" und "Right" zusammengesetzte Bounded_String-Zeichenkette. Die Parameter "Left" und "Right" können jeweils vom Typ Character, String oder Bounded_String sein, wobei mindestens einer der Parameter vom Typ Bounded_String sein muß.
procedure Append (Source : in out Bounded_String; New_Item : in ...;
Drop : in Truncation := Error);
Die Prozedur Append erweitert die Bounded_String-Zeichenkette in "Source" um das Zeichen/die Zeichenkette in "New_Item". Der Parameter "New_Item" kann vom Typ Character, String oder Bounded_String sein.
function "&" (Left : in ...; Right : in ...) return Bounded_String;
Die Funktion "&" liefert eine aus den Zeichen/Zeichenketten in "Left" und "Right" zusammengesetzte Bounded_String-Zeichenkette. Die Parameter "Left" und "Right" können jeweils vom Typ Character, String oder Bounded_String sein, wobei mindestens einer der Parameter vom Typ Bounded_String sein muß. Wenn die Zeichenkette zu lang wird, wird immer die Ausnahme Length_Error ausgelöst.
function Element (Source : in Bounded_String; Index : in Positive) return Character;
Liefert das Zeichen an Position "Index" der Zeichenkette "Source". Wenn "Index" größer als die Länge der Zeichenkette ist, wird die Ausnahme Index_Error ausgelöst.
procedure Replace_Element (Source : in out Bounded_String; Index : in Positive; By : in Character);
Ersetzt das Zeichen an Position "Index" der Zeichenkette "Source" durch das Zeichen "By". Wenn "Index" größer als die Länge der Zeichenkette ist, wird die Ausnahme Index_Error ausgelöst.
function Slice (Source : in Bounded_String; Low : in Positive; High : in Natural) return String;
Liefert den Ausschnitt von "Low" bis "High" aus der Zeichenkette "Source". Wenn "Low" größer als die Länge von "Source" ist, wird die Ausnahme Index_Error ausgelöst.


Spezifikation des Paketes "Ada.Strings.Bounded"




 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.