Pregunta

cuando estoy imprimir este procedimiento siguiente -

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;

El resultado es (por ejemplo): 1- 1- 2010

Mi pregunta es cómo prevenir la separación de un carácter antes de cada valor de fecha. (día mes año). Por supuesto que estoy usando el procedimiento de registro de fecha con el interior de la celebración de día / mes / año.

Gracias de antemano.

¿Fue útil?

Solución

Usted tiene algunas opciones:

  • Si conoce el valor entero es siempre no negativo, se puede cortar la cadena que omita el espacio en blanco.
  • Puede utilizar la función Ada.Strings.Fixed.Trim () para recortar el espacio en blanco.
  • Puede utilizar el procedimiento put () de una instancia Ada.Text_IO.Integer_IO (como el Ada.Integer_Text_IO preinstantiated).

Aquí hay algo de código para ilustrar:

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;

Compilación y ejecución de este con rendimientos GNAT:

$./int_image
Raw 'image    : 20:
Trimmed image :20:
Sliced image  :20:
'Put' image   :20:
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top