const Eng:array[0..30] of string =('','ONE','TWO','THREE','FOUR','FIVE','SIX','SEVEN','EIGHT','NINE','TEN', 'ELEVEN','TWELVE','THIRTEEN','FOURTEEN','FIFTEEN','SIXTEEN','SEVENTEEN','EITHTEEN','NINETEEN', 'TWENTY','THIRTY','FORTY','FIFTY','SIXTY','SEVENTY','EIGHTY','NINETY','HUNDRED','THOUSAND','MILLION');function NumtoEng(Small:Double): string; var str,str1,str2,str3:string; len,I,J:integer; begin str1:=formatfloat('0',small-frac(small)); len:=length(str1); if len>9 then exit; i:=len-2; str2:=rightstr(str1,2); str1:=copy(str1,1,i); J:=0; str3:=''; str:=''; while length(str2)>0 do begin str3:=''; if j=0 then begin if strtoint(str2)<21 then str3:=eng[strtoint(str2)] else str3:=eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))]; J:=J+28; str2:=rightstr(str1,1); I:=I-1; str1:=copy(str1,1,I); end else if (J=28) then begin str3:=eng[strtoint(leftstr(str2,1))]; if str3<>'' then str3:=str3+' '+eng[J]; J:=J+1; str2:=rightstr(str1,3); I:=I-3; str1:=copy(str1,1,I); end else if (J=29) then begin if strtoint(str2)>100 then begin str3:=eng[strtoint(leftstr(str2,1))]+' '+eng[28]; str2:=rightstr(str2,2); end; if strtoint(str2)<21 then str3:=str3+' '+eng[strtoint(str2)] else str3:=str3+' '+eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))]; if trim(str3)<>'' then str3:=str3+' '+eng[29]; J:=J+1; str2:=rightstr(str1,3); I:=I-3; str1:=copy(str1,1,I); end else if (J=30) then begin if strtoint(str2)>100 then begin str3:=eng[strtoint(leftstr(str2,1))]+' '+eng[28]; str2:=rightstr(str2,2); end; if strtoint(str2)<21 then str3:=str3+' '+eng[strtoint(str2)] else str3:=str3+' '+eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))]; if trim(str3)<>'' then str3:=trim(str3)+' '+eng[30]; str2:=''; end; str:=trim(str3)+' '+trim(str); end; str2:=formatfloat('0',frac(small)*100); if strtoint(str2)<21 then str3:=eng[strtoint(str2)] else str3:=eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))]; if trim(str3)<>'' then str3:='CENTS '+str3; if trim(str3)<>'' then str:=str+' AND '+trim(str3); result:=str; end;
'ELEVEN','TWELVE','THIRTEEN','FOURTEEN','FIFTEEN','SIXTEEN','SEVENTEEN','EITHTEEN','NINETEEN',
'TWENTY','THIRTY','FORTY','FIFTY','SIXTY','SEVENTY','EIGHTY','NINETY','HUNDRED','THOUSAND','MILLION');function NumtoEng(Small:Double): string;
var str,str1,str2,str3:string;
len,I,J:integer;
begin
str1:=formatfloat('0',small-frac(small));
len:=length(str1);
if len>9 then exit;
i:=len-2;
str2:=rightstr(str1,2);
str1:=copy(str1,1,i);
J:=0;
str3:='';
str:='';
while length(str2)>0 do
begin
str3:='';
if j=0 then
begin
if strtoint(str2)<21 then str3:=eng[strtoint(str2)]
else str3:=eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
J:=J+28;
str2:=rightstr(str1,1);
I:=I-1;
str1:=copy(str1,1,I);
end
else if (J=28) then
begin
str3:=eng[strtoint(leftstr(str2,1))];
if str3<>'' then str3:=str3+' '+eng[J];
J:=J+1;
str2:=rightstr(str1,3);
I:=I-3;
str1:=copy(str1,1,I);
end
else if (J=29) then
begin
if strtoint(str2)>100 then
begin
str3:=eng[strtoint(leftstr(str2,1))]+' '+eng[28];
str2:=rightstr(str2,2);
end;
if strtoint(str2)<21 then str3:=str3+' '+eng[strtoint(str2)]
else str3:=str3+' '+eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
if trim(str3)<>'' then str3:=str3+' '+eng[29];
J:=J+1;
str2:=rightstr(str1,3);
I:=I-3;
str1:=copy(str1,1,I);
end
else if (J=30) then
begin
if strtoint(str2)>100 then
begin
str3:=eng[strtoint(leftstr(str2,1))]+' '+eng[28];
str2:=rightstr(str2,2);
end;
if strtoint(str2)<21 then str3:=str3+' '+eng[strtoint(str2)]
else str3:=str3+' '+eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
if trim(str3)<>'' then str3:=trim(str3)+' '+eng[30];
str2:='';
end;
str:=trim(str3)+' '+trim(str);
end;
str2:=formatfloat('0',frac(small)*100);
if strtoint(str2)<21 then str3:=eng[strtoint(str2)]
else str3:=eng[18+strtoint(leftstr(str2,1))]+' '+eng[strtoint(rightstr(str2,1))];
if trim(str3)<>'' then str3:='CENTS '+str3;
if trim(str3)<>'' then str:=str+' AND '+trim(str3);
result:=str;
end;