Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
|
Re: Integer in String(in Worten) konvertieren
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 := 'null' else 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
|
|
Zitat
|