Programación en Ada/Unidades predefinidas/Ada.Strings.Fixed
Ada.Strings.Fixed proporciona subprogramas para la transformación y el manejo de strings de tamaño fijo.
Ejemplo
editarpackage
Fechasis
type
Fechais
record
Dia : Positiverange
1 .. 31; Mes : Positiverange
1 .. 12; Año : Positiverange
1 .. 3000;end
record
;subtype
String_Fechais
String (1..10);-- Pasa la fecha a string en formato "dd-mm-aaaa".
--
function
Imagen (F: Fecha)return
String_Fecha;end
Fechas;
with
Ada.Strings.Fixed;use
Ada.Strings.Fixed;use
Ada.Strings;package
body
Fechasis
function
Imagen (F: Fecha)return
String_fechais
procedure
Mover_Imagen_Positive (N: Positive; S:in
out
String)is
begin
-- Move copia un string en otro de otro tamaño, añadiendo un
-- padding opcionalmente. Trim elimina los blancos a izquierda o
-- derecha (en este caso el blanco que pone el 'Image).
Move (Source => Trim (Positive'Image (N), Left), Target => S, Justify => Right, Pad => '0');end
Mover_Imagen_Positive; S_Fecha : String_Fecha;begin
Mover_Imagen_Positive (F.Dia, S_Fecha (1..2)); S_Fecha (3) := '-'; Mover_Imagen_Positive (F.Mes, S_Fecha (4..5)); S_Fecha (6) := '-'; Mover_Imagen_Positive (F.Año, S_Fecha (7..10));return
S_Fecha;end
Imagen;end
Fechas;
Especificación
editarSegún el manual de referencia, la especificación de este paquete ha de ser la siguiente:
with
Ada.Strings.Maps;package
Ada.Strings.Fixedis
pragma
Preelaborate(Fixed);-- "Copy" procedure for strings of possibly different lengths
procedure
Move (Source :in
String; Target :out
String; Drop :in
Truncation := Error; Justify :in
Alignment := Left; Pad :in
Character := Space);-- Search subprograms
function
Index (Source :in
String; Pattern :in
String; Going :in
Direction := Forward; Mapping :in
Maps.Character_Mapping := Maps.Identity)return
Natural;function
Index (Source :in
String; Pattern :in
String; Going :in
Direction := Forward; Mapping :in
Maps.Character_Mapping_Function)return
Natural;function
Index (Source :in
String; Set :in
Maps.Character_Set; Test :in
Membership := Inside; Going :in
Direction := Forward)return
Natural;function
Index_Non_Blank (Source :in
String; Going :in
Direction := Forward)return
Natural;function
Count (Source :in
String; Pattern :in
String; Mapping :in
Maps.Character_Mapping := Maps.Identity)return
Natural;function
Count (Source :in
String; Pattern :in
String; Mapping :in
Maps.Character_Mapping_Function)return
Natural;function
Count (Source :in
String; Set :in
Maps.Character_Set)return
Natural;procedure
Find_Token (Source :in
String; Set :in
Maps.Character_Set; Test :in
Membership; First :out
Positive; Last :out
Natural);-- String translation subprograms
function
Translate (Source :in
String; Mapping :in
Maps.Character_Mapping)return
String;procedure
Translate (Source :in
out
String; Mapping :in
Maps.Character_Mapping);function
Translate (Source :in
String; Mapping :in
Maps.Character_Mapping_Function)return
String;procedure
Translate (Source :in
out
String; Mapping :in
Maps.Character_Mapping_Function);-- String transformation subprograms
function
Replace_Slice (Source :in
String; Low :in
Positive; High :in
Natural; By :in
String)return
String;procedure
Replace_Slice (Source :in
out
String; Low :in
Positive; High :in
Natural; By :in
String; Drop :in
Truncation := Error; Justify :in
Alignment := Left; Pad :in
Character := Space);function
Insert (Source :in
String; Before :in
Positive; New_Item :in
String)return
String;procedure
Insert (Source :in
out
String; Before :in
Positive; New_Item :in
String; Drop :in
Truncation := Error);function
Overwrite (Source :in
String; Position :in
Positive; New_Item :in
String)return
String;procedure
Overwrite (Source :in
out
String; Position :in
Positive; New_Item :in
String; Drop :in
Truncation := Right);function
Delete (Source :in
String; From :in
Positive; Through :in
Natural)return
String;procedure
Delete (Source :in
out
String; From :in
Positive; Through :in
Natural; Justify :in
Alignment := Left; Pad :in
Character := Space);-- String selector subprograms
function
Trim (Source :in
String; Side :in
Trim_End)return
String;procedure
Trim (Source :in
out
String; Side :in
Trim_End; Justify :in
Alignment := Left; Pad :in
Character := Space);function
Trim (Source :in
String; Left :in
Maps.Character_Set; Right :in
Maps.Character_Set)return
String;procedure
Trim (Source :in
out
String; Left :in
Maps.Character_Set; Right :in
Maps.Character_Set; Justify :in
Alignment := Strings.Left; Pad :in
Character := Space);function
Head (Source :in
String; Count :in
Natural; Pad :in
Character := Space)return
String;procedure
Head (Source :in
out
String; Count :in
Natural; Justify :in
Alignment := Left; Pad :in
Character := Space);function
Tail (Source :in
String; Count :in
Natural; Pad :in
Character := Space)return
String;procedure
Tail (Source :in
out
String; Count :in
Natural; Justify :in
Alignment := Left; Pad :in
Character := Space);-- String constructor functions
function
"*"
(Left :in
Natural; Right :in
Character)return
String;function
"*"
(Left :in
Natural; Right :in
String)return
String;end
Ada.Strings.Fixed;