unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Ed_EIN: TEdit;
Ed_AUS: TEdit;
Btn_Start: TButton;
procedure Btn_StartClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
nr1, nr2, nr3, translated2:string;
a,b,i2,AktuelleZahl, Stelle1, Stelle2, Stelle3: integer;
Bloecke: TStringList;
nummern: TStringList;
translated: TStringList;
implementation
{$R *.dfm}
procedure Zerlegen;
begin
Bloecke:=TStringList.Create;
Bloecke.Clear;
Repeat
begin
b:=a mod 1000;
a:=(a-b)div 1000;
Bloecke.Add(inttostr(b));
end;
until a=0;
end;
procedure benenne;
begin
if aktuellezahl>99 then
begin
Stelle1:=(aktuellezahl - (aktuellezahl mod 100)) div 100;
end
else
begin
Stelle1:=0;
end;
if aktuellezahl mod 10 > 0 then
begin
stelle3:= aktuellezahl mod 10;
end
else
begin
stelle3:= 0;
end;
if aktuellezahl - (aktuellezahl - (aktuellezahl mod 100))>9 then
begin
Stelle2:=((aktuellezahl -(stelle3)-(stelle1 *100)) div 10);
end
else
begin
stelle2:=0;
end;
end;
procedure translate;
begin
nummern:= TstringList.Create;
nummern.Add('ein');
nummern.Add('eins');
nummern.Add('zwei');
nummern.Add('drei');
nummern.Add('vier');
nummern.Add('fuenf');
nummern.Add('sechs');
nummern.Add('sieben');
nummern.Add('acht');
nummern.Add('neun');
nummern.Add('zehn');
nummern.Add('zwanzig'); //11//
nummern.Add('dreissig');
nummern.Add('vierzig');
nummern.Add('fuenfzig');
nummern.Add('sechzig');
nummern.Add('siebzig');
nummern.Add('achzig');
nummern.Add('neunzig'); //18//
nummern.Add('elf');
nummern.Add('zwoelf');
nummern.Add('und');
if stelle1 <> 0 then
begin
if stelle1=1 then
begin
nr1:=nummern [0];
end
else
begin
nr1:=nummern [stelle1];
end;
end;
if stelle2 > 1 then
begin
nr2:=nummern [Stelle2 +9];
end
else
begin
if stelle2 = 1 then
begin
if stelle3 = 1 then
begin
nr2:=nummern[19]; //elf//
stelle3:=0 //dritte stelle faellt weg//
end;
if stelle3 = 2 then
begin
nr2:=nummern[20]; //zwoelf//
stelle3:=0 //s. Oben//
end
else
begin
nr2:=nummern[10];
end;
end;
end;
if stelle3 > 1 then
begin
nr3:=nummern[stelle3];
end
else
begin
if stelle3 = 1 then
begin
nr3:= nummern[0]
end;
end;
end;
procedure erweitere;
begin
translated:=TstringList.Create;
if (stelle1 = 0) or (stelle2 = 0) or (stelle3 = 0) then
begin
if (stelle1 = 0) and (stelle2 = 0) and (stelle3 = 0) then
begin
translated2:='a';
end
else
begin
if ((stelle1=0) and (stelle2=0)) or ((stelle1=0) and (stelle3=0)) or ((stelle2=0) and (stelle3=0)) then
begin
if (stelle1=0) and (stelle2=0) then
begin
translated2:=nr3;
end;
if (stelle1=0) and (stelle3=0) then
begin
translated2:=nr2;
end;
if (stelle2=0) and (stelle3=0) then
begin
translated2:=nr1;
end;
end
else
begin
if stelle1=0 then
begin
translated2:=nr3 + 'und' + nr2;
end;
if stelle2=0 then
begin
translated2:=nr1 + nr3;
end;
if stelle3=0 then
begin
translated2:=nr1 + nr2;
end;
end;
end;
end
else
begin
translated2:=nr1 + nr3 + 'und' + nr2;
end;
translated.Add(translated2);
end;
procedure mach_mathe;
var i:Integer;
begin
Zerlegen;
i2:=Bloecke.Count;
for i:=0 to bloecke.Count do
begin
aktuellezahl:=strtoint(Bloecke[i2]);
benenne;
translate;
erweitere;
i2:=i2 -1;
Bloecke.Free;
nummern.Free;
translated.Free;
end;
end;
procedure TForm1.Btn_StartClick(Sender: TObject);
begin
a:=strtoint(Ed_EIN.Text);
mach_mathe;
//Ed_Aus.Text:=inttostr(i);//
end;
end.