Das folgende Beispiel zeigt, wie man Zahleneinträge in Wörter umwandeln und als String darstellen kann.
Hier wird in Deutsch und in Englisch umgewandelt, es kann aber jede beliebige Sprache angewendet werden, soweit man die Sprache beherrscht und der Unicode für die Sprache vorhanden ist.
function ZahlToString(z: LongInt): string;
function ZahlBis19(za:LongInt): string;
begin
case za of
0: result:='null';
1: result:='ein';
2: result:='zwei';
3: result:='drei';
4: result:='vier';
5: result:='fünf';
6: result:='sechs';
7: result:='sieben';
8: result:='acht';
9: result:='neun';
10: result:='zehn';
11: result:='elf';
12: result:='zwölf';
13: result:='dreizehn';
14: result:='vierzehn';
15: result:='fünfzehn';
16: result:='sechzehn';
17: result:='siebzehn';
18: result:='achtzehn';
19: result:='neunzehn';
end;
end;
function ZahlBis99(za: LongInt): string;
begin
case za of
1..19: result:=ZahlBis19(za);
20: result:='zwanzig';
21..29: result:=ZahlBis19(za-(za div 10)*10)+'undzwanzig';
30: result:='dreisig';
31..39: result:=ZahlBis19(za-(za div 10)*10)+'unddreisig';
40: result:='vierzig';
41..49: result:=ZahlBis19(za-(za div 10)*10)+'undvierzig';
50:result:='fünfzig';
51..59: result:=ZahlBis19(za-(za div 10)*10)+'undfünfzig';
60:result:='sechzig';
61..69: result:=ZahlBis19(za-(za div 10)*10)+'undsechzig';
70: result:='siebzig';
71..79: result:=ZahlBis19(za-(za div 10)*10)+'undsiebzig';
80: result:='achzig';
81..89: result:=ZahlBis19(za-(za div 10)*10)+'undachzig';
90: result:='neunzig';
91..99: result:=ZahlBis19(za-(za div 10)*10)+'undneunzig';
end;
end;
function ZahlBis999(za: LongInt): string;
begin
case za of
0..99: result:=zahlbis99(za);
100: result:='einhundert';
101..199: result:='einhundert und '+Zahlbis99(za-100);
200: result:='zweihundert';
201..299: result:='zweihundert und '+Zahlbis99(za-200);
300: result:='dreihundert';
301..399: result:='dreihundert und '+Zahlbis99(za-300);
400: result:='vierhundert';
401..499: result:='vierhundert und '+Zahlbis99(za-400);
500: result:='fünfhundert';
501..599: result:='fünfhundert und '+Zahlbis99(za-500);
600: result:='sechshundert';
601..699: result:='sechshundert und '+Zahlbis99(za-600);
700: result:='siebenhundert';
701..799: result:='siebenhundert und '+Zahlbis99(za-700);
800: result:='achthundert';
801..899: result:='achthundert und '+Zahlbis99(za-800);
900: result:='neunhundert';
901..999: result:='neunhundert und '+Zahlbis99(za-900);
end;
end;
var za:longInt;
begin
result:='';
if z<0 then
begin
result:='minus ';
z:=abs(z);
end;
if z=1 then
begin
Result:=result+'eins';
exit;
end;
za:=z;
if za div 1000000000 > 0 then
begin
if za div 1000000000=1 then
result:='eine Milliarde '
else
result:=Zahlbis999(za div 1000000000)+' Milliarden ';
za:=za - (za div 1000000000)*1000000000;
end;
if za div 1000000 > 0 then
begin
if za div 1000000=1 then
result:=result +'eine Million '
else
result:=result+Zahlbis999(za div 1000000)+' Millionen ';
za:=za - (za div 1000000)*1000000;
end;
if za div 1000 > 0 then
begin
if za div 1000=1 then
result:=result +'ein Tausend '
else
result:=result+Zahlbis999(za div 1000)+' Tausend ';
za:=za - (za div 1000)*1000;
end;
if za > 0 then
begin
result:=result+Zahlbis999(za)+' ';
za:=za - (za div 100)*100;
end;
end;
function ZahlToStringEnglish(z: LongInt): string;
function ZahlBis19(za: LongInt): string;
begin
case za of
0: result:='zero';
1: result:='one';
2: result:='two';
3: result:='three';
4: result:='four';
5: result:='five';
6: result:='six';
7: result:='seven';
8: result:='eight';
9: result:='nine';
10: result:='ten';
11: result:='eleven';
12: result:='twelve';
13: result:='thirdteen';
14: result:='fourteen';
15: result:='fifteen';
16: result:='sixteen';
17: result:='seventeen';
18: result:='eightteen';
19: result:='nineteen';
end;
end;
function ZahlBis99(za: LongInt): string;
begin
case za of
1..19: result:=ZahlBis19(za);
20: result:='twenty';
21..29: result:='twenty-'+ZahlBis19(za-(za div 10)*10);
30: result:='thirty';
31..39: result:='thirty-'+ZahlBis19(za-(za div 10)*10);
40: result:='forty';
41..49: result:='forty-'+ZahlBis19(za-(za div 10)*10);
50: result:='fifty';
51..59: result:='fifty-'+ZahlBis19(za-(za div 10)*10);
60 :result:='sixty';
61..69: result:='sixty-'+ZahlBis19(za-(za div 10)*10);
70: result:='seventy';
71..79: result:='seventy-'+ZahlBis19(za-(za div 10)*10);
80: result:='eighty';
81..89: result:='eighty-'+ZahlBis19(za-(za div 10)*10);
90: result:='ninety';
91..99: result:='ninety-'+ZahlBis19(za-(za div 10)*10);
end;
end;
function ZahlBis999(za: LongInt): string;
begin
case za of
0..99: result:=zahlbis99(za);
100: result:='one hundred';
101..199: result:='one hundred and '+Zahlbis99(za-100);
200: result:='two hundred';
201..299: result:='two hundred and '+Zahlbis99(za-200);
300: result:='three hundred';
301..399: result:='three hundred '+Zahlbis99(za-300);
400: result:='four hundred';
401..499: result:='four hundred '+Zahlbis99(za-400);
500: result:='five hundred';
501..599: result:='five hundred and '+Zahlbis99(za-500);
600: result:='six hundred';
601..699: result:='six hundred and '+Zahlbis99(za-600);
700: result:='seven hundred';
701..799: result:='seven hundred and '+Zahlbis99(za-700);
800: result:='eight hundred';
801..899: result:='eight hundred and '+Zahlbis99(za-800);
900: result:='nine hundred';
901..999: result:='nine hundred and '+Zahlbis99(za-900);
end;
end;
var za:longInt;
begin
result:='';
if z<0 then
begin
result:='minus ';
z:=abs(z);
end;
if z=1 then
begin
Result:=result+'one';
exit;
end;
za:=z;
if za div 1000000000 > 0 then
begin
if za div 1000000000=1 then
result:='one billion '
else
result:=Zahlbis999(za div 1000000000)+' billion ';
za:=za - (za div 1000000000)*1000000000;
end;
if za div 1000000 > 0 then
begin
if za div 1000000=1 then
result:=result +'one million '
else
result:=result+Zahlbis999(za div 1000000)+' million ';
za:=za - (za div 1000000)*1000000;
end;
if za div 1000 > 0 then
begin
if za div 1000=1 then
result:=result +'one thousend '
else
result:=result+Zahlbis999(za div 1000)+' thousend ';
za:=za - (za div 1000)*1000;
end;
if za > 0 then
begin
result:=result+Zahlbis999(za)+' ';
za:=za - (za div 100)*100;
end;
end;
Beispiel :
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := ZahlToString(strtoint(edit1.Text));
Edit2.Text := ZahlToStringEnglish(strtoint(edit2.Text));
end;
Keine Kommentare:
Kommentar veröffentlichen