honki_tonks_zivilisationen_0.5.5305_cfbe2104/src/Umwandlungen/UmwandlungenAdaEigenes.adb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
with Ada.Float_Text_IO; use Ada.Float_Text_IO;
with Ada.Strings.UTF_Encoding.Wide_Wide_Strings; use Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
with Ada.Strings.Wide_Wide_Fixed;

with LeseOptionen;

-- Eventuell noch ein Zeichen für tausender Stellen hinzufügen? äöü
package body UmwandlungenAdaEigenes is
   
   function ZahlAlsString
     (ZahlExtern : in GanzeZahl)
      return Wide_Wide_String
   is begin
      
      if
        ZahlExtern >= 0
      then
         return Ada.Strings.Wide_Wide_Fixed.Trim (Source => ZahlExtern'Wide_Wide_Image,
                                                  Side   => Ada.Strings.Left);
         
      else
         return ZahlExtern'Wide_Wide_Image;
      end if;
      
   end ZahlAlsString;
   
   
   
   function KommazahlAlsString
     (KommazahlExtern : in Kommazahl)
      return Wide_Wide_String
   is begin
      
      Put (To   => Kommazahlenstring,
           Item => Float (KommazahlExtern),
           Aft  => 2,
           Exp  => 0);
            
      return Ada.Strings.Wide_Wide_Fixed.Trim (Source => PunktOderKomma (ZahlenstringExtern => Decode (Item => Kommazahlenstring)),
                                               Side   => Ada.Strings.Left);
      
   end KommazahlAlsString;
   
   
   
   function PunktOderKomma
     (ZahlenstringExtern : in Wide_Wide_String)
      return Wide_Wide_String
   is begin
      
      Zwischenspeicher := ZahlenstringExtern;
      
      ZahlenSchleife:
      for ZahlenSchleifenwert in Zwischenspeicher'Range loop
         
         case
           Zwischenspeicher (ZahlenSchleifenwert)
         is
            when '.' =>
               Zwischenspeicher (ZahlenSchleifenwert) := LeseOptionen.Dezimaltrennzeichen;
               exit ZahlenSchleife;
               
            when others =>
               null;
         end case;
         
      end loop ZahlenSchleife;
      
      return Zwischenspeicher;
      
   end PunktOderKomma;

end UmwandlungenAdaEigenes;