Function
HundredAtATime(TheAmount:Integer):String;
var
TheResult : String;
Begin
TheResult := '';
TheAmount := Abs(TheAmount);
While TheAmount > 0 do
Begin
If TheAmount >= 900 Then
Begin
TheResult := TheResult + 'Nine hundred
';
TheAmount := TheAmount - 900;
End;
If TheAmount >= 800 Then
Begin
TheResult := TheResult + 'Eight hundred
';
TheAmount := TheAmount - 800;
End;
If TheAmount >= 700 Then
Begin
TheResult := TheResult + 'Seven hundred
';
TheAmount := TheAmount - 700;
End;
If TheAmount >= 600 Then
Begin
TheResult := TheResult + 'Six hundred
';
TheAmount := TheAmount - 600;
End;
If TheAmount >= 500 Then
Begin
TheResult := TheResult + 'Five hundred
';
TheAmount := TheAmount - 500;
End;
If TheAmount >= 400 Then
Begin
TheResult := TheResult + 'Four hundred
';
TheAmount := TheAmount - 400;
End;
If TheAmount >= 300 Then
Begin
TheResult := TheResult + 'Three hundred
';
TheAmount := TheAmount - 300;
End;
If TheAmount >= 200 Then
Begin
TheResult := TheResult + 'Two hundred
';
TheAmount := TheAmount - 200;
End;
If TheAmount >= 100 Then
Begin
TheResult := TheResult + 'One hundred
';
TheAmount := TheAmount - 100;
End;
If TheAmount >= 90 Then
Begin
TheResult := TheResult + 'Ninety ';
TheAmount := TheAmount - 90;
End;
If TheAmount >= 80 Then
Begin
TheResult := TheResult + 'Eighty ';
TheAmount := TheAmount - 80;
End;
If TheAmount >= 70 Then
Begin
TheResult := TheResult + 'Seventy
';
TheAmount := TheAmount - 70;
End;
If TheAmount >= 60 Then
Begin
TheResult := TheResult + 'Sixty ';
TheAmount := TheAmount - 60;
End;
If TheAmount >= 50 Then
Begin
TheResult := TheResult + 'Fifty ';
TheAmount := TheAmount - 50;
End;
If TheAmount >= 40 Then
Begin
TheResult := TheResult + 'Fourty ';
TheAmount := TheAmount - 40;
End;
If TheAmount >= 30 Then
Begin
TheResult := TheResult + 'Thirty ';
TheAmount := TheAmount - 30;
End;
If TheAmount >= 20 Then
Begin
TheResult := TheResult + 'Twenty ';
TheAmount := TheAmount - 20;
End;
If TheAmount >= 19 Then
Begin
TheResult := TheResult + 'Nineteen
';
TheAmount := TheAmount - 19;
End;
If TheAmount >= 18 Then
Begin
TheResult := TheResult + 'Eighteen
';
TheAmount := TheAmount - 18;
End;
If TheAmount >= 17 Then
Begin
TheResult := TheResult + 'Seventeen
';
TheAmount := TheAmount - 17;
End;
If TheAmount >= 16 Then
Begin
TheResult := TheResult + 'Sixteen
';
TheAmount := TheAmount - 16;
End;
If TheAmount >= 15 Then
Begin
TheResult := TheResult + 'Fifteen
';
TheAmount := TheAmount - 15;
End;
If TheAmount >= 14 Then
Begin
TheResult := TheResult + 'Fourteen
';
TheAmount := TheAmount - 14;
End;
If TheAmount >= 13 Then
Begin
TheResult := TheResult + 'Thirteen
';
TheAmount := TheAmount - 13;
End;
If TheAmount >= 12 Then
Begin
TheResult := TheResult + 'Twelve ';
TheAmount := TheAmount - 12;
End;
If TheAmount >= 11 Then
Begin
TheResult := TheResult + 'Eleven ';
TheAmount := TheAmount - 11;
End;
If TheAmount >= 10 Then
Begin
TheResult := TheResult + 'Ten ';
TheAmount := TheAmount - 10;
End;
If TheAmount >= 9 Then
Begin
TheResult := TheResult + 'Nine ';
TheAmount := TheAmount - 9;
End;
If TheAmount >= 8 Then
Begin
TheResult := TheResult + 'Eight ';
TheAmount := TheAmount - 8;
End;
If TheAmount >= 7 Then
Begin
TheResult := TheResult + 'Seven ';
TheAmount := TheAmount - 7;
End;
If TheAmount >= 6 Then
Begin
TheResult := TheResult + 'Six ';
TheAmount := TheAmount - 6;
End;
If TheAmount >= 5 Then
Begin
TheResult := TheResult + 'Five ';
TheAmount := TheAmount - 5;
End;
If TheAmount >= 4 Then
Begin
TheResult := TheResult + 'Four ';
TheAmount := TheAmount - 4;
End;
If TheAmount >= 3 Then
Begin
TheResult := TheResult + 'Three ';
TheAmount := TheAmount - 3;
End;
If TheAmount >= 2 Then
Begin
TheResult := TheResult + 'Two ';
TheAmount := TheAmount - 2;
End;
If TheAmount >= 1 Then
Begin
TheResult := TheResult + 'One ';
TheAmount := TheAmount - 1;
End;
End;
HundredAtATime :=
TheResult;
End;
Function
Real2CheckAmount(TheAmount:Real):String;
Var
IntVal : LongInt;
TmpVal : Integer;
TmpStr,
RetVal : String;
begin
TheAmount := Abs(TheAmount);
{ центы }
TmpVal := Round(Frac(TheAmount) * 100);
IntVal := Trunc(TheAmount);
TmpStr := HundredAtATime(TmpVal);
If TmpStr = '' Then TmpStr
:= 'Zero ';
RetVal := TmpStr + 'cents';
If IntVal > 0 Then RetVal :=
'dollars and ' + RetVal;
{ сотни }
TmpVal := Round(Frac((IntVal * 1.0) /
1000.0) * 1000);
IntVal := Trunc((IntVal * 1.0) / 1000.0);
TmpStr := HundredAtATime(TmpVal);
RetVal := TmpStr + RetVal;
{ тысячи }
TmpVal := Round(Frac((IntVal * 1.0) /
1000.0) * 1000);
IntVal := Trunc((IntVal * 1.0) / 1000.0);
TmpStr := HundredAtATime(TmpVal);
If TmpStr <> ''
Then
RetVal := TmpStr + 'Thousand ' +
RetVal;
{ миллионы }
TmpVal := Round(Frac((IntVal * 1.0) /
1000.0) * 1000);
IntVal := Trunc((IntVal * 1.0) / 1000.0);
TmpStr := HundredAtATime(TmpVal);
If TmpStr <> ''
Then
RetVal := TmpStr + 'Million ' +
RetVal;
{ миллиарды }
TmpVal := Round(Frac((IntVal * 1.0) /
1000.0) * 1000);
IntVal := Trunc((IntVal * 1.0) / 1000.0);
TmpStr := HundredAtATime(TmpVal);
If TmpStr <> ''
Then
RetVal := TmpStr + 'Billion ' +
RetVal;
Real2CheckAmount := RetVal;
end;