# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  تبدیل حروف به عدد

## دنیای دلفی

سوالات زیادی برای تبدیل عدد به حرف شده است و پاسخهای مختلفی وجود دارد ولی چگونه می توان عکس این کار را انجام داد یعنی حروف را به عدد تبدیل کرد اگر لطف کنید راهنمایی کنید ممنون می شوم .

----------


## دنیای دلفی

یعنی تا الان کسی به این مشکل برخورد نکرده لطف کنید در صورت وقت داشتن راهنمایی کنید

----------


## Mahmood_M

مثلا چه حروفی را می خواهید به عدد تبدیل کنید ؟
همه حرفها را که نمی توان به عدد تبدیل کرد !!! ( حروف و اعداد محدودیتی ندارند )
مثلا یکی از کارهایی که می شود با استفاده از این تبدیلات انجام داد روزهای هفته است
یعنی مثلا می شود شماره روزهای هفته را به دست آورد و بعد به وسیله به کارگیری آرایه ها آن را به حروفی که خودمان تعریف می کنیم تبدیل کرد ( مثلا روز دوم را برابر با یک شنبه قرار می دهیم و ... )
البته شاید هم این کار امکان داشته باشد ، به هر حال بقیه دوستانی که می دانند حتما به شما جواب خواهند داد ...
موفق باشید ...

----------


## cybercoder

اگه با استفاده از ساختارهای شرطی بشه اعداد رو به حروف تبدیل کرد. حتما بر عکسش هم میشه دیگه.
خوب اون روشی که عدد رو تبدیل به حروف می کنه رو برعکس کنید حل می شه دیگه.

موفق باشید

----------


## shobair

سلام
سوالتون واضح نیست. میخواین مقدار کد اسکی حروف رو در بیارین؟ یا میخواین طبق یک روال حروف رو به عدد تبدیل کنید؟

----------


## دنیای دلفی

مثلا یک میلیون و پانصد هزار و ششصدو هفتاد و نه را تبدیل کند به 1500679

----------


## دنیای دلفی

من از کد زیر برای تبدیل عدد به متن استفاده می کنم ولی عکسش را چیکار کنم

unit Curr2Str;
interface
function Add2Harf(i:int64):string;
implementation
function Add2Harf(i:int64):string;
const v=' و ';
var
ok:boolean;
{___________________________________}
function yekan(y:byte):string;
begin
case y of
0:result:='';
1:result:='یک';
2:result:='دو';
3:result:='سه';
4:result:='چهار';
5:result:='پنج';
6:result:='شش';
7:result:='هفت';
8:result:='هشت';
9:result:='نه';
enD;
if result=''then ok:=false else ok:=true;
end;
{___________________________________}
function dahgan(y:byte):string;
begin
case y of
0:result:='';
1:result:='ده';
2:result:='بیست';
3:result:='سی';
4:result:='چهل';
5:result:='پنجاه';
6:result:='شصت';
7:result:='هفتاد';
8:result:='هشتاد';
9:result:='نود';
enD;
if result=''then ok:=false else ok:=true;
end;
{___________________________________}
function sadgan(y:byte):string;
begin
case y of
0:result:='';
1:result:='یکصد';
2:result:='دویست';
3:result:='سیصد';
4:result:='چهارصد';
5:result:='پانصد';
6:result:='ششصد';
7:result:='هفتصد';
8:result:='هشتصد';
9:result:='نهصد';
enD;
if result=''then ok:=false else ok:=true;
end;
{___________________________________}
function dah(y:byte):string;
begin
case y of
0:result:='';
10:result:='ده';
11:result:='یازده';
12:result:='دوازده';
13:result:='سیزده';
14:result:='چهارده';
15:result:='پانزده';
16:result:='شانزده';
17:result:='هفده';
18:result:='هجده';
19:result:='نوزده';
enD;
if result=''then ok:=false else ok:=true;
end;
{___________________________________}
function seragham(si:smallint):string;
begin
result:='';
result:=sadgan(si div 100);
if ok then result:=result+v;
if((si mod 100)div 10)<>1 then begin
result:=result+dahgan((si mod 100)div 10);
if ok then result:=result+v;
result:=result+yekan(si mod 10);
if not ok then result:=copy(result,1,length(result)-3);
End
else begin
result:=result+dah(si mod 100);
end;
if result='' then ok:=false else ok:=true;
end;
{___________________________________}
const
tr=' تریلیون';
mr=' میلیارد';
ml=' میلیون';
hz=' هزار';
begin
ok:=false;
result:=seragham(i div 1000000000000);
if ok then result:=result+tr+v;
result:=result+seragham((i mod 1000000000000)div 1000000000);
if ok then result:=result+mr+v;
result:=result+seragham((i mod 1000000000)div 1000000);
if ok then result:=result+ml+v;
result:=result+seragham((i mod 1000000)div 1000);
if ok then result:=result+hz+v;
result:=result+seragham(i mod 1000);
if not ok then result:=copy(result,1,length(result)-3);
if i=0 then result:='صفر';
end;




end.

----------


## دنیای دلفی

بابا دمتون گرم یکی یک حالی بده

----------


## mohamadmjk

خوب معلومه که تبدیل عدد به حرف آسون هست چون هر کاراکتر به تنهایی ارزش داره ولی در مورد حروف اینطور نیست چون مثلا ده و پنج و هزار مرتبه رو مثل 10 و 5 و 1000 مشخص نمی کنند چون تعداد حروف منطقی نیست فکر کنم با شرط های مختلف بتونی این کار رو بکنی پایه کارت را 'و' , فاصله قرار بده مثلا بگو اگر به 'و' رسیدی اونوقت ... 
شرمنده چیز بهتری به نظرم نمی رسه.

----------


## MH2538

سلام دوست عزیز
یه الگوریتم پیشنهاد  می دم اگر خواستی می تونیم باهم روش کار کنیم:(تو بخش OenSource)

1 - ریختن دهگان - هزارگان - ده هزار گان و ... در آرایه 2 بعدی با حفظ ارزش :
مثلا 10هزار و 20 هزار پشت سر هم ولی از نظر ارزشی در یک ردیف
2- پیدا کردن اعداد به حروف از رشته :
مثلاً در رشته ده هزار و صد و بیست و شش
اول بدنبال خانواده صدهزارگان ها و سپس ده هزار گان و ... می گردیم و در آرایه ذخیره می کنیم
سپس یه مرحله از جستجو کم می کنیم یعنی دیگه دنبال صدهزارگان نمی گردیم  و از ده هزارگان شروع می کنیم وهمینطور تا به عدد 1 برسیم
به ترتیب خانه هاب آرایه حاصله رو با آرایه اول مقایسه کرده و ...

----------


## دنیای دلفی

ممنون از همراهیتون دارم با یک روش سرخ پوستی روش کار می کنم اگر به جواب رسیدم اعلام می کنم

----------


## mahsa119

خوب دوست عزیز اول باید یه format  ثابت برای کسانی که با برنامه ات کار می کنند در نظر بگیری و اونارو مجبور کنی که از اون format  پیروی کنند .

بعد بر اساس اون طرح قسمتهای یکان و دهگان و صدگان و غیره رو بدست بیاری بعد از اون هر قسمت رو در عدد نامی خودش ضرب کنی مثلا عددی که در صدگان بدست اوردی در 100 ضرب کنی و غیره بعد همه رو با هم جمع کنی این بشه اون عددی که میخواستی

----------


## Mah6447

از راهنمایی دوستان و اساتید بسیار ممنونم . لطفاً در مورد تبدیل اعداد اعشاری به حروف فارسی نیز راهنمایی نمایید . مثال :    12.75  => دوازه و هفتاد و پنج صدم

----------


## Mah6447

> از راهنمایی دوستان و اساتید بسیار ممنونم . لطفاً در مورد تبدیل اعداد اعشاری به حروف فارسی نیز راهنمایی نمایید . مثال :    12.75  => دوازه و هفتاد و پنج صدم


لطفاً کمک کنید ....

----------

