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;