# Converting numerical amounts to Text-based messages

I'm building a project and i need code to transform numerical amounts (i.e.125.50 dollars) to text-based messages (i.e. one hundred and 25 dollars and fifty cents). Is there any possible way to do this in code?.
###### Who is Participating?

Commented:
Hi Latinfriend,
here is the answer for you,but partially,you update it to speak the cents.
Regards,

veeramani

If u want to convert no.s into words use this function
ie 2567 - Two thousand Five hundred sixty seven

str := notowords(2567) ;
Max Limit - 1,999,999,999. (Integer limit, I can't help it)

Note : If u get any bugs in this, let me know.

Function NotoWords(Money : Integer): string;
var
DivisnArr : array [1..6] of integer ;
HunThuArr : array [1..4] of string ;
TenNinArr : array [1..9] of string ;
TeennoArr : array [1..9] of string ;
SingleArr : array [1..9] of string ;

Remainder,Quotient, I : integer ;
HundredAdd, TempStr : string ;

begin

DivisnArr[1] := 1000000000 ;
DivisnArr[2] := 1000000 ;
DivisnArr[3] := 1000 ;
DivisnArr[4] := 100 ;
DivisnArr[5] := 10 ;
DivisnArr[6] := 1 ;

HunThuarr[1] := 'Billion' ;
HunThuarr[2] := 'Million' ;
HunThuarr[3] := 'Thousand' ;
HunThuarr[4] := 'Hundred' ;

TenNinArr[1] := 'Ten' ;
TenNinArr[2] := 'Twenty' ;
TenNinArr[3] := 'Thirty' ;
TenNinArr[4] := 'Fourty' ;
TenNinArr[5] := 'Fifty' ;
TenNinArr[6] := 'Sixty' ;
TenNinArr[7] := 'Seventy' ;
TenNinArr[8] := 'Eighty' ;
TenNinArr[9] := 'Ninty' ;

TeennoArr[1] := 'Eleven' ;
TeennoArr[2] := 'Twelve' ;
TeennoArr[3] := 'Thirteen' ;
TeennoArr[4] := 'Fourteen' ;
TeennoArr[5] := 'Fifteen' ;
TeennoArr[6] := 'Sixteen' ;
TeennoArr[7] := 'Seventeen' ;
TeennoArr[8] := 'Eighteen' ;
TeennoArr[9] := 'Ninteen' ;

SingleArr[1] := 'One' ;
SingleArr[2] := 'Two' ;
SingleArr[3] := 'Three' ;
SingleArr[4] := 'Four' ;
SingleArr[5] := 'Five' ;
SingleArr[6] := 'Six' ;
SingleArr[7] := 'Seven' ;
SingleArr[8] := 'Eight' ;
SingleArr[9] := 'Nine' ;

if money=0 then exit ;
for i:=1 to 6 do
begin
if i<5 then
begin
quotient := Money div divisnarr[i] ;
Remainder := Money mod divisnarr[i] ;
end
else
quotient := remainder ;

if quotient>0 then
begin
if quotient>99 then
begin
HundredAdd := SingleArr[quotient div 100] + ' '+ HunThuarr[4] + ' ';
quotient := quotient mod 100 ;
end ;
if quotient > 0 then
begin
if (quotient mod 10)=0 then
begin
Tempstr := TenNinArr[quotient div 10] ;
end
else if (quotient > 20) then
begin
tempstr := TenNinArr[quotient div 10] + ' ' + SingleArr[quotient mod 10] ;
end
else if (quotient > 10) and (quotient < 20) then
begin
tempstr := TeenNoArr[quotient-10] ;
end
else if quotient<10 then
begin
tempstr := SingleArr[quotient] ;
end ;
end ;
if i<5 then
NotoWords := hundredadd + tempstr +' '+ HunThuarr[i] + ' '+  notowords(remainder)
else
NotoWords := tempstr + ' ';
exit ;
end ;
end ;

end ;
0

Author Commented:
Adjusted points from 100 to 150
0

Commented:
Sorry, EE prohibits members to ask assignment Q's and experts to answer them.

If you have specific problems with how to write the code then that is a perfectly reasonable question to ask, but to just plain ask for the code for your assignment is not.

Sorry,

Raymmond.
0

Author Commented:
Edited text of question.
0

Commented:
you need to give more points for this code
0

Commented:
hi LatinFriend_M,

get the fre component-library vglib at

http://www.tsinet.ru/~vg/

it contains this component:
TMoneyString : TMoneyString is high-customizable component that converts
numbers to verbal representation.

hope this helps

meikl
0

Author Commented:
i really aprecciate your help kretzschmar, but i would like to do my best and try to code myself this rutine. I will keep the adress you gave me just in case, but for now, i will keep looking for the basics for this rutine. Thanks anyway kretzschmar. f15iaf, i appreciate your comment. I'm a new one in this site and i would like to know how much points my question deserve. Thanks for your comment.
0

Commented:
in this page you can find a component that make the changes from numeric to letters

this is a great page

http://delphi.icm.edu.pl/
0

Author Commented:
lgmm

I appreciate your help, but i was looking in the site you recommended me and i couldn't find the component you told me. Perhaps you can tell me where to look for in the site (i use delphi 3). However, i'm not looking for a component, i'm looking for "clues" to begin my own unit. If in this site is a explanation of the component you told me or pieces of the code used to create it, i will take your answer for good!!. Please let me know where i can find this component.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.