Hello Dear,
The attached file is to add NumberToWord To Excel Functions
add the attached file to
C:\Documents and Settings\Administrator\Application Data\Microsoft\addins
>From Excel :
tools=>AddIns
Check NumberToWord
Usage
1)=SpellSR(100)
2)=SepllDo(100)
3)=SpellDo(A1) ** where A1 is cell
My Regards,
On 7/12/06, Sabu M.H <[EMAIL PROTECTED]> wrote:
>
> Dear all,
>
> Just wrote this for fun. It may help some one.
>
> Best regards,
> Sabu M H
>
>
> (*********************************************************************************
>
> Unit name: UDigitConverter.pas
>
> Purpose:
> TDigitToWordConverter class can be used for
> converting digits to words.
> Example : 12345 can be converted to 'Twelve Thousand
> Three Hundred and Forty Five'
>
> Contact:
> Developed by Sabu M H
> E-mail : [EMAIL PROTECTED] <sabumh%40rediffmail.com>(comments and
> suggestions can be sent to this id)
>
> Limitation:
> Only numbers upto 99999999 can be converted to
> words.
> Indian numbering system is used (India, Pakistan,
> Bangladesh and Myanmar(Burma))
>
> Comments:
> Can be extended.
> The suffix words can be customized by changing the
> constant values.
>
> Usage:
> 1.Add UDigitConverter in uses clause.
> 2.Create an instance of TDigitToWordConverter
> 3.Assign the number to convert to 'NumberToConvert'
> property.
> 4.Call 'ConvertToWords' method.
> 5.Read 'NumberInWords' property.
>
> Method used:
> Number is moved to an integer array.
> Find out the category.
> Convert to words.
>
> History:
> 1.Date of development : 15-November-2005.
>
> 2.Updated on : 26-June-2006
> Added string array constants and new functions for
> clarity.
>
>
> *************************************************************************************)
>
> unit UDigitConverter;
>
> interface
>
> uses
> Windows, SysUtils;
>
> const
> Ones: array[0..9] of string =
> (' Zero', ' One', ' Two', ' Three', ' Four', '
> Five', ' Six', ' Seven', ' Eight', ' Nine');
>
> LessThanTwenty: array[10..19] of string =
> (' Ten', ' Eleven', ' Twelve', ' Thirteen', '
> Fourteen', ' Fifteen', ' Sixteen ', ' Seventeen', '
> Eighteen', ' Nineteen');
>
> Tens: array[2..9] of string =
> (' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty',
> ' Seventy', ' Eighty', ' Ninety');
>
> THOUSAND = 'Thousand';
> HUNDRED = 'Hundred';
> LAKH = 'Lakh';
> CRORE = 'Crore';
> CONNCETOR = 'and';
>
> type
> TNumberType = (ntone, ntten, nthundred, ntthousand,
> nttenthousand, ntlakh, nttenlakh, ntCrore);
>
> TDigitToWordConverter = class
> private
> NumberArray : array[0..7] of Integer;
> FNumberToConvert : Integer;
> FNumberInWords : String;
>
> function GetFirstTwo(Index:Integer):String;
>
> function GetOnes : String;
> function GetTens : String;
> function GetHundred : String;
> function GetThousand : String;
> function GetTenThousand : String;
> function GetLakh : String;
> function GetTenLakh : String;
> function GetCrore : String;
> public
> function ConvertToWords : String;
>
> property NumberToConvert : Integer read
> FNumberToConvert write FNumberToConvert;
> property NumberInWords : String read
> FNumberInWords; {only reading is permitted}
> end;
>
> implementation
>
> function
> TDigitToWordConverter.GetFirstTwo(Index:Integer):String;
> begin
> if (NumberArray[Index] = 1) then
> Result := LessThanTwenty[10 * NumberArray[Index] +
> NumberArray[Index-1]]
> else
> begin
> Result := Tens[NumberArray[Index]];
> if (NumberArray[Index-1] <> 0) then
> Result := Result + Ones[NumberArray[Index-1]];
> end;
> end;
>
> function TDigitToWordConverter.GetOnes: String;
> begin
> Result := Ones[NumberArray[ord(ntOne)]];
> end;
>
> function TDigitToWordConverter.GetTens: String;
> begin
> if NumberArray[Ord(ntten)] = 1 then
> Result := LessThanTwenty[10 *
> NumberArray[Ord(ntten)] + NumberArray[Ord(ntone)]];
>
> if NumberArray[Ord(ntten)] > 1 then
> begin
> Result := Tens[NumberArray[Ord(ntten)]];
> if NumberArray[Ord(ntOne)] > 0 then
> Result := Result + GetOnes;
> end;
>
> if NumberArray[Ord(ntten)] = 0 then
> if NumberArray[Ord(ntOne)] > 0 then
> Result := Result + GetOnes;
> end;
>
> function TDigitToWordConverter.GetHundred: String;
> begin
> if (NumberArray[Ord(nthundred)] <> 0) then
> Result := Result +
> Ones[NumberArray[Ord(nthundred)]] + ' ' + HUNDRED;
>
> if (10 * NumberArray[Ord(ntten)] +
> NumberArray[Ord(ntone)]) > 0 then
> Result := Result + ' ' + CONNCETOR + GetTens;
> end;
>
> function TDigitToWordConverter.GetThousand:String;
> begin
> if (NumberArray[Ord(ntthousand)] <> 0) then
> Result := Ones[NumberArray[Ord(ntthousand)]]+ ' '
> + THOUSAND;
> Result := Result + GetHundred;
> end;
>
> function TDigitToWordConverter.GetTenThousand:String;
> begin
> if (NumberArray[Ord(nttenthousand)] <> 0) then
> Result := GetFirstTwo(Ord(nttenthousand)) + ' ' +
> THOUSAND;
> If Result ='' then
> Result := Result + GetThousand
> else
> Result := Result + GetHundred;
> end;
>
> function TDigitToWordConverter.GetLakh:String;
> begin
> if (NumberArray[Ord(ntlakh)] <> 0) then
> Result := Ones[NumberArray[Ord(ntlakh)]] + ' ' +
> LAKH;
> Result := Result + GetTenThousand;
> end;
>
> function TDigitToWordConverter.GetTenLakh : String;
> begin
> if (NumberArray[Ord(nttenlakh)] <> 0) then
> Result := GetFirstTwo(Ord(nttenlakh)) + ' ' +
> LAKH;
> if Result = '' then
> Result := Result + GetLakh
> else
> Result := Result + GetTenThousand;
> end;
>
> function TDigitToWordConverter.GetCrore:String;
> begin
> if (NumberArray[Ord(ntCrore)] <> 0) then
> Result := Ones[NumberArray[Ord(ntCrore)]] + ' '+
> CRORE;
> Result := Result + GetTenLakh;
> end;
>
> function TDigitToWordConverter.ConvertToWords: String;
> var
> NumberType : TNumberType;
> NumStr : String;
> i,j : Integer; {for looping}
> begin
> FNumberInWords := ' ';
> NumStr := IntToStr(FNumberToConvert);
>
> {determining the number type}
> NumberType := TNumberType(Length(NumStr)-1);
>
> if NumberType > ntCrore then
> begin
> MessageBox(0, 'Maximum number to convert :
> 99999999', 'Converter', MB_OK);
> Exit;
> end;
>
> {intitializing the number array}
> for i := Ord(ntone) to Ord(ntCrore) do
> NumberArray[i] := 0;
>
> {storing number to number array}
> j := 0;
> for i := Length(NumStr) downto 1 do
> begin
> NumberArray[j] := StrToInt(NumStr[i]);
> Inc(j);
> end;
>
> case NumberType of
> ntone : FNumberInWords := GetOnes;
> ntten : FNumberInWords := GetTens;
> nthundred : FNumberInWords := GetHundred;
> ntthousand : FNumberInWords := GetThousand;
> nttenthousand : FNumberInWords := GetTenThousand;
> ntlakh : FNumberInWords := GetLakh;
> nttenlakh : FNumberInWords := GetTenLakh;
> ntCrore : FNumberInWords := GetCrore;
> end;
> end;
>
> end.
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>
>
--
Loay Habash,
+966 50 33 22 315
[Non-text portions of this message have been removed]
------------------------ Yahoo! Groups Sponsor --------------------~-->
Something is new at Yahoo! Groups. Check out the enhanced email design.
http://us.click.yahoo.com/SISQkA/gOaOAA/yQLSAA/i7folB/TM
--------------------------------------------------------------------~->
-----------------------------------------------------
Home page: http://groups.yahoo.com/group/delphi-en/
To unsubscribe: [EMAIL PROTECTED]
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/delphi-en/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/