Autor Beitrag
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: So 08.09.02 10:03 
Für alle, die mal einen Scheck ausfüllen müssen oder sonstwie einen Betrag als Wort brauchen:
ausblenden volle Höhe Delphi-Quelltext
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:
74:
75:
76:
function TForm1.BetragInWorten(Betrag: Currency): string;
  function GetGruppe(Gruppe: string): string;
  const zt1 : array[0..19of string = ('null''eins''zwei''drei''vier',
                'fünf''sechs''sieben''acht''neun',
                                         'zehn''elf''zwölf''dreizehn''vierzehn',
                                         'fünfzehn''sechzehn''siebzehn''achtzehn'
                                         'neunzehn');
           zt2 : array[2..9of string = ('zwanzig''dreißig''vierzig''fünfzig',
                'sechzig''siebzig''achtzig''neunzig');
  var
   Hunderter, Zehner, Einer  : string;
   wert      : integer;
   begin
     Result := '';
       //Hunderter
       wert := StrToInt(Gruppe[1]);
       if  Wert > 0 then
         if  Wert = 1 then
             Hunderter  := 'einhundert'
           else
             Hunderter  := zt1[wert] + 'hundert';
       //Zehner
       wert := StrToInt(Copy(Gruppe, 22));
       if  (Wert >= 10and (Wert < 20then
         Einer := zt1[wert]
       else begin
         wert := StrToInt(Gruppe[2]);
           if  Wert > 1 then
             Zehner  := zt2[wert];
           wert := StrToInt(Gruppe[3]);
           if  Wert > 0 then begin
             //Einer
               if  Zehner = '' then
                 Einer := zt1[wert]
               else
                 if  Wert = 1 then
                     Einer := 'einund'
                   else
                     Einer := zt1[wert] + 'und';
           end;
       end;
       Result := Hunderter + Einer + Zehner;
   end;

const tp1 :array[1..3of string = ('einemilliarde''einemillion''eintausen');
        tp2 :array[1..3of string = ('milliarden''millionen''tausend');
var
  bt, sz, grp  : string;
  i    : integer;
begin
   Result := '';
   bt    := FormatFloat('000000000000', Trunc(Betrag));
   sz    := '';

   //Teuros
   for i := 1 to 4 do begin
     grp  := Copy(bt, (i-1)*3+13);
       if  grp <> '000' then begin
         if  i <> 4 then
             if  grp = '001' then
                 sz := sz + tp1[i]
               else
                 sz := sz + GetGruppe(grp) + tp2[i]
           else
             sz  := sz + GetGruppe(grp);
       end;
   end;

   //Pfennige Upps: Cent
   if  Frac(Betrag) <> 0 then begin
     bt := FormatFloat('#0', Frac(Betrag) * 100);
       sz  := sz + ' ' + bt + '/100';
   end;
   //Fertig
   Result := sz;
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...