Frage

, wenn ich Druck bin dieses Verfahren unter -

procedure put (Date:Date_Type) is
begin
  Put(Integer'Image(Date.Day)); --'
  Put("-");
  Put(Integer'Image(Date.Month)); --'
  Put("-");
  Put(Integer'Image(Date.Year)); --'
end;

Das Ergebnis ist (zum Beispiel): 1- 1- 2010

Meine Frage ist, wie der Abstand von einem Zeichen vor jedem Date-Wert zu verhindern. (Tag Monat Jahr). Natürlich innen halten Tag / Monat / Jahr Datum Verfahren mit Rekord Ich verwende.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Sie haben ein paar Optionen:

  • Wenn Sie die Integer-Wert wissen immer nicht-negativ ist, können Sie die Zeichenfolge in Scheiben schneiden die führende leer.
  • wegzulassen
  • Sie können die Ada.Strings.Fixed.Trim () Funktion verwenden, um den Rohling abschneiden.
  • Sie können die Put () Prozedur aus einer Ada.Text_IO.Integer_IO Instanziierung (wie die preinstantiated Ada.Integer_Text_IO) verwenden.

Hier ist ein Code zu veranschaulichen:

with Ada.Text_IO;
with Ada.Integer_Text_IO;
with Ada.Strings.Fixed;

procedure Int_Image is

   use Ada.Text_IO;
   use Ada.Integer_Text_IO;
   use Ada.Strings.Fixed;

   N : Integer := 20;

   Raw_Image     : constant String := Integer'Image(N);

   Trimmed_Image : constant String := Trim(Raw_Image, Ada.Strings.Left);

   Sliced_Image  : constant String := Raw_Image(2 .. Raw_Image'Last);

begin
   Put_Line("Raw 'image    :" & Raw_Image & ":");
   Put_Line("Trimmed image :" & Trimmed_Image & ":");
   Put_Line("Sliced image  :" & Sliced_Image & ":");
   Put     ("'Put' image   :");
   Put     (N, Width => 0);
   Put_Line(":");
end Int_Image;

Kompilieren und Ausführen dieser mit GNAT ergibt:

$./int_image
Raw 'image    : 20:
Trimmed image :20:
Sliced image  :20:
'Put' image   :20:
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top