Function NumToWords(dblValue : Double) : String;

var

ones : array[0..9] of String;

teens : array[0..9] of String;

tens : array[0..9] of String;

thousands : array[0..4] of String;

i, nPosition, nDigit, bAllZeros : Integer;

strResult, strTemp, tmpBuff : String;

begin

ones[0] := 'ZERO';

ones[1] := 'ONE';

ones[2] := 'TWO';

ones[3] := 'THREE';

ones[4] := 'FOUR';

ones[5] := 'FIVE';

ones[6] := 'SIX';

ones[7] := 'SEVEN';

ones[8] := 'EIGHT';

ones[9] := 'NINE';

teens[0] := 'TEN';

teens[1] := 'ELEVEN';

teens[2] := 'TWELVE';

teens[3] := 'THIRTEEN';

teens[4] := 'FOURTEEN';

teens[5] := 'FIFTEEN';

teens[6] := 'SIXTEEN';

teens[7] := 'SEVENTEEN';

teens[8] := 'EIGHTEEN';

teens[9] := 'NINETEEN';

tens[0] := '';

tens[1] := ''; //TEN1

tens[2] := 'TWENTY';

tens[3] := 'THIRTY';

tens[4] := 'FORTY';

tens[5] := 'FIFTY';

tens[6] := 'SIXTY';

tens[7] := 'SEVENTY';

tens[8] := 'EIGHTY';

tens[9] := 'NINETY';

thousands[0] := '';

thousands[1] := 'THOUSAND';

thousands[2] := 'MILLION';

thousands[3] := 'BILLION';

thousands[4] := 'TRILLION';

try

strResult := '';

strTemp := IntToStr(round(dblValue));

//Iterate through string

For i := Length(strTemp) downTo 1 do

begin

//Get value of this digit

nDigit := StrToInt(MidStr(strTemp, i, 1));

//Get column position

nPosition := (Length(strTemp) - i) + 1;

//Action depends on 1's, 10's or 100's column

//Select Case (nPosition Mod 3)

case (nPosition Mod 3) of

1 : //Case 1 //'1's position

begin

bAllZeros := 0;

if i = 1 Then

tmpBuff := ones[nDigit] + ' '

else

if MidStr(strTemp, i - 1, 1) = '1' Then

begin

tmpBuff := teens[nDigit] + ' ';

end

else

if nDigit > 0 Then

tmpBuff := ones[nDigit] + ' '

else

begin

//If next 10s & 100s columns are also

//zero, then don't show 'thousands'

bAllZeros := 1;

if i > 1 Then

begin

If MidStr(strTemp, i - 1, 1) <> '0' Then

bAllZeros := 0;

end;

If i > 2 Then

begin

If MidStr(strTemp, i - 2, 1) <> '0' Then

bAllZeros := 0;

End;

tmpBuff := '';

end;

If (bAllZeros = 0) and (nPosition > 1) Then

tmpBuff := tmpBuff + thousands[nPosition div 3] + ' ';

strResult := tmpBuff + strResult;

end;

2 : //Tens position

begin

if nDigit > 0 Then

//if MidStr(strTemp, i - 1, 1) <> '1' Then

strResult := tens[nDigit] + ' ' + strResult;

end;

0 : //Hundreds position

begin

if nDigit > 0 Then

strResult := ones[nDigit] + ' HUNDRED ' + strResult;

end;

end;

end;

Result := strResult;

except

Result := '';

end;

end;

examples of such usage :

Label1.Caption := NumToWords('your variable');

Just simple right ?

you can also try this Delphi function

in the next post I will give a delphi function, number to words the Indonesian version.

*Source : forget the source of this.*

## 8 comments:

Not working. Hard to understand.Make it simple.Im a beginner in delphi

Wellcome to Exkash.com | Cashout E-curreny to Bank Account Directly.

There is no doubt about the fact that the Internet is the best place to sell your perfect money for local cash, the reason being that there are thousands of prospective buyers who are willing to pay any amount to get your Perfect money funds therefore you can capitalize on this to make a significant gain by selling to them. Perfect money is quite scarce for many interested buyers and buying from third parties can cost some fortune, however you can sell at discounted rates to prospective buyers directly from your Perfect money account.

The best place to sell your Perfect money for local cash is exkash.com, this website has a huge market place where interested buyers can easily locate you and then you can set your own prices and negotiate with the buyers online. Once you have completed pricing negotiation with interested buyers, Exkash.com will then help you collect the funds in your Perfect money account where you can proceed to request for bank transfer.

okpay to bank

Cashout perfect money to bank account

Perfectmoney Debit card

Egopay to bank

Bitcoin to Bank account

Bitcoin Debit card

Excellent.... thanks, just a question, What is MidStr?

You can found MidStr on StrUtils unit (you need declare it).

I have other question, How can I add "Cents"?

Nice to see the attractive post. I am very happy to see this post. It helped everybody at all.

The personal statement is a document that people often struggle mightily with, and this is coupled with a good deal of pressure considering how important it is to your success in getting a neurosurgery online residency.

neurosurgery residency

Tour is always exciting and interesting. If it is night tour, it is more enjoyable. Night tour in new york city is really magical . The high line, a public park built on a historic freight rail line elevated above the streets on Manhattan’s west side is mind blowing. New york’s night harbor cruise, with awesome views of New york’s unforgettable skyline as well as opportunities to take up-close and personal photos of status of liberty removes the monotonous of life. Anyone can see the beauty of Chinatown, soho and Green village by the luxurious coach. The tour will continue to gran central station and Rockefeller center which is exceptional for you. At last one can enjoy the sight of 50th street of New york city at night, you can’t believe your eyes. So everyone should go on a tour like New-york city in any age.

tours in washington dc

Washington DC tours

Day and night tours washington dc

USA Guided tours

Bestaan er methoden of middelen om je concentratie te verbeteren? Hoe werkt dat dan en waar kan ik dit verkrijgen?

Concentratie verbeteren

Waar moet je op letten bij het kopen van Nootropics, welke soorten Nootropics zijn er en hoe werken ze. Wil je meer focus, of een beter geheugen, of allebei? Lees meer over Nootropics.

Nootropics

## Post a Comment