Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#9

Re: Integer in String(in Worten) konvertieren

  Alt 9. Mai 2009, 21:07
War mal so frei die Änderungswünsche einzubauen und Zahlen unter Null zu unterstützen.

Delphi-Quellcode:
function IntToText(n: integer; firstCall: boolean {$IFDEF DELPHI4_UP} = true {$ENDIF}): string;
const
  Einer: array[0..12] of string = ('', 'ein', 'zwei', 'drei', 'vier', 'fünf',
                    'sechs', 'sieben', 'acht', 'neun', 'zehn', 'elf', 'zwölf');
  Zehner: array[1..9] of string = ('zehn', 'zwanzig', 'dreißig', 'vierzig',
  'fünfzig', 'sechzig', 'siebzig', 'achtzig', 'neunzig');
var
  s: string;
begin
  case n of
  low(integer)..-1:
    Result := 'minus ' + IntToText(-n, true);
  0:
    if firstCall then Result := 'nullelse Result:= '';
  1:
    Result:= 'eins';
  2..12:
    Result:= Einer[n];
  13..15:
    Result:= Einer[n mod 10] + 'zehn';
  16:
    Result := 'sechzehn';
  17:
    Result:= 'siebzehn';
  18..19:
    Result:= Einer[n mod 10] + 'zehn';
  20..99:
    begin
      s:= Einer[n mod 10];
      if n Mod 10 > 0 then s:= s + 'und';
      Result:= s + Zehner[n div 10];
    end;
  100..999:
    Result:= Einer[n div 100] + 'hundert' + IntToText(n mod 100, false);
  1000..999999:
    Result:= IntToText(n div 1000, false) + 'tausend' + IntToText(n mod 1000, false);
  1000000..1000999:
    Result:= 'einemillion' + IntToText(n mod 1000000, false);
  2000000..999999999:
    Result:= IntToText(n div 1000000, false) + 'millionen' + IntToText(n mod 1000000, false);
  1000000000..1999999999:
    Result:= 'einemilliarde' + IntToText(n mod 1000000000, false);
  else
    Result:= 'zweimilliarden' + IntToText(n mod 1000000000, false);
  end;
end;
MfG,
Bug

EDIT1: (meinen) Fehler berichtigt
EDIT2: Hab "sechszehn" im Code dringehabt
  Mit Zitat antworten Zitat