11. Anlage
 
zurück
11.6.3 Das Paket "Text_IO.Editing"


Das Paket "Text_IO.Editing" stellt den privaten Typ "Picture" (Muster) mit zugehörigen Operationen und das generisches Paket "Decimal_Output" zur Verfügung. Ein Objekt des Typs "Picture" ist aus einer wohlgeformten Musterzeichenkette (siehe Bilden einer Musterzeichenkette (picture string formation)) und einer booleschen Einheit zusammengesetzt, die anzeigt, ob eine Zahl mit dem Wert 0 eine aufbereitete Ausgabezeichenkette mit lauter Leerzeichen ergibt. Das Paket "Decimal_Output" enthält Unterprogramme für die aufbereitete Ausgabe, in denen die in Erzeugung einer aufbereiteten Ausgabe festgelegten Wirkungen implementiert werden. Das Bibliothekspaket "Text_IO.Editing" hat die folgende Vereinbarung:

package Ada.Text_IO.Editing is
   type Picture is private;

   function Valid (Pic_String : in String;
                   Blank_When_Zero : in Boolean := False) return Boolean;
   -- Valid gibt "wahr" zurück, wenn "Pic_String" eine wohlgeformte
   -- Musterzeichenkette (siehe Bilden einer Musterzeichenkette)
   -- ist, bei der die Länge der Erweiterung "Max_Picture_Length"
   -- nicht überschreitet und weder "Blank_When_Zero" "falsch" ist,
   -- noch "Pic_String" kein "*" enthält.

function To_Picture (Pic_String : in String;
                     Blank_When_Zero : in Boolean := False) return Picture;
   -- "To_Picture" gibt ein Ergebnismuster zurück, sodaß die Anwendung
   -- der Funktion "Pic_String" auf dieses Ergebnis eine erweiterte Musterzeichenkette
   -- ergibt, die zu "Pic_String" äquivalent ist, und die Anwendung von "Blank_When_Zero"
   -- auf das Ergebnismuster den gleichen Wert ergibt wie bei dem Parameter "Blank_When_Zero".
   -- Der Fehler "Picture_Error" tritt auf, wenn Valid (Pic_String,Blank_When_Zero)
   -- "falsch" liefert.

   function Pic_String (Pic : in Picture) return String;
   function Blank_When_Zero (Pic : in Picture) return Boolean;
   -- Wenn Pic das Ergebnis von To_Picture(String_Item,Boolean_Item)
   -- ist, dann gilt:* Pic_String(Pic) gibt eine erweiterte Musterzeichenkette
   -- äquivalent zu "String_Item" zurück, wobei alle Kleinbuchstaben
   -- durch Großbuchstaben ersetzt sind.* Blank_When_Zero(Pic) gibt "Boolean_Item" zurück.
   -- Wenn Pic_1 und Pic_2 Objekte vom Typ Picture sind, dann ist
   -- "="(Pic_1,Pic_2) "wahr", wenn * Pic_String(Pic_1)=Pic_String(Pic_2) und
   -- Blank_When_Zero(Pic_1)=Blank_When_Zero(Pic_2).

   Max_Picture_Length : constant := <implementierungsabhängig>;
   -- "Max_Picture_Length" sollte mindestens 30 sein.

   Picture_Error : exception;

   Default_Currency : constant String := "$";
   -- Währungszeichenketten mit bis zu 10 Zeichen sind zugelassen.

   Default_Fill : constant Character := "*";
   Default_Separator : constant Character := ",";
   Default_Radix_Mark : constant Character := ".";

   generic
      type Num is delta <> digits <>;
      Default_Currency : in String :=
      Text_IO.Editing.Default_Currency;
      Default_Fill : in Character :=
      Text_IO.Editing.Default_Fill;
      Default_Separator : in Character :=
      Text_IO.Editing.Default_Separator;
      Default_Radix_Mark: in Character :=
      Text_IO.Editing.Default_Radix_Mark;

   package Decimal_Output is

      function Length (Pic : in Picture;
                       Currency : in String := Default_Currency) return Natural;
      -- Length gibt Pic_String(Pic)*Length + Currency_Length_Adjustment-Radix_Adjustment zurück,
      -- wobei * Currency_Length_Adjustment = Currency’Length-1,
      -- wenn "$" in Pic_String(Pic) auftritt, ansonsten 0.
      -- * Radix_Adjustment = 1, wenn "V" oder "v" in Pic_String(Pic) auftreten, ansonsten 0.

      function Valid (Item : in Num;
                      Pic : in Picture;
                      Currency : in String := Default_Currency) return Boolean;
      -- "Valid" gibt "wahr" zurück, wenn Image(Item,Pic,Currency)
      -- keinen Anordnungsfehler hervorruft, und ansonsten 0.

      function Image (Item : in Num;
                      Pic : in Picture;
                      Currency : in String := Default_Currency;
                      Fill : in Character := Default_Fill;
                      Separator : in Character := Default_Separator;
                      Radix_Mark : in Character := Default_Radix_Mark) return String;

      -- "Image" gibt die aufbereitete Ausgabezeichenkette wie in
      -- Erzeugung einer aufbereiteten Ausgabe beschrieben
      -- zurück. Wenn diese Regeln einen Anordnungsfehler entdecken,
      -- dann wird die Ausnahme "Layout_Error" angestoßen.

      procedure Put (File : in File_Type;
                     Item : in Num;
                     Pic : in Picture;
                     Currency : in String := Default_Currency;
                     Fill : in Character := Default_Fill;
                     Separator : in Character := Default_Separator;
                     Radix_Mark : in Character := Default_Radix_Mark);

      procedure Put (Item : in Num;
                     Pic : in Picture;
                     Currency : in String := Default_Currency;
                     Fill : in Character := Default_Fill;
                     Separator : in Character := Default_Separator;
                     Radix_Mark : in Character := Default_Radix_Mark);
      -- Jede dieser "Put"-Prozeduren gibt Image(Item,Pic,Currency,Fill,Seperator,Radix_Mark)
      -- konsistent mit den Konventionen für "Put" für andere reele Typen im Falle von beschränkten
      -- Zeilenlängen (siehe "Get und Put Procedures" Anlage A) aus.

      procedure Put (To : out String;
                     Item : in Num;
                     Pic : in Picture;
                     Currency : in String := Currency;
                     Fill : in Character := Default_Fill;
                     Separator : in Character := Default_Separator;
                     Radix_Mark : in Character := Default_Radix_Mark);
      -- "Put" kopiert Image(Item,Pic,Currency,Fill,Separator,Radix_Mark)
      -- rechtsbündig auf die Zeichenkette "To".
      -- Andernfalls werden den nicht zugeteilten Zeichen in "To"
      -- Leerzeichen zugewiesen. Wenn To’Length kleiner als die Länge
      -- der Ergebniszeichenkette von "Image" ist, dann tritt ein Anordnungsfehler auf.

   end Decimal_Output;
private
... -- nicht definiert
end Ada.Text_IO.Editing;



Die Ausnahme "Constraint_Error" wird erzeugt, wenn die Funktion "Image" oder eine der "Put"-Prozeduren mit einer leeren Zeichenkette für "Currency" angestoßen wird.


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