PDA

View Full Version : سوال: تبدیل اعداد اعشار به حروف



JASEM128
یک شنبه 06 فروردین 1396, 15:26 عصر
با سلام و خسته نباشید
از دوستان خواهش میکنم مشکل این کد رو بهم بگن الان 4 روزه گرفتارم
اجرکم من الله
فایل ضمیمه شده

unit HoroofUnit;


interface
function Add2Harf(i:int64):string;


implementation


function Add2Harf(i:int64):string;
//function AliHgethoroof(i:Extended):string;
const v=' و ';
var
ok:boolean;
j:Int64;


{___________________________________}
function yekan(y:byte):string;
begin
case y of
0:result:='';
1:result:='One';
2:result:='Two';
3:result:='Three';
4:result:='Four';
5:result:='Five';
6:result:='Six';
7:result:='Seven';
8:result:='Eight';
9:result:='Nine';
enD;
if result=''then ok:=false else ok:=true;
end;
{___________________________________}
function dahgan(y:byte):string;
begin
case y of
0:result:='';
1:result:='Ten';
2:result:='Twenty';
3:result:='Thirty';
4:result:='Fourty';
5:result:='Fifty';
6:result:='Sixty';
7:result:='Seventy';
8:result:='Eighty';
9:result:='Ninety';
enD;
if result=''then ok:=false else ok:=true;
end;
{___________________________________}
function sadgan(y:byte):string;
begin
case y of
0:result:='';
1:result:='One Hundred';
2:result:='Two Hundred';
3:result:='Three Hundred';
4:result:='Four Hundred';
5:result:='Five Hundred';
6:result:='Six Hundred';
7:result:='Seven Hundred';
8:result:='Eight Hundred';
9:result:='Nine Hundred';
enD;
if result=''then ok:=false else ok:=true;
end;
{___________________________________}
function dah(y:byte):string;
begin
case y of
0:result:='';
10:result:='Ten';
11:result:='Eleven';
12:result:='Twelve';
13:result:='Thirteen';
14:result:='Fourteen';
15:result:='Fifteen';
16:result:='Sixteen';
17:result:='Seventeen';
18:result:='Eighteen';
19:result:='Nineteen';
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
I_tr=' Trillion';
I_mr=' Milliard';
I_ml=' Million';
I_hz=' Thousand';


FloatPoint: array [1..7] of String = (' ???',' ???',' ?????',' ?? ?????',' ?? ?????',' ????????',' ?? ????????');
var
jj: String;


begin


ok:=false;
if pos('.',FloatToStr(i)) <> 0 then
jj := copy( FloatToStr(i),1,pos('.',FloatToStr(i))-1)
else jj := FloatToStr(i);
j := StrToInt64Def(jj,0);
result:=seragham(j div 1000000000000);
if ok then result:=result+I_tr+v;
result:=result+seragham((j mod 1000000000000)div 1000000000);
if ok then result:=result+I_mr+v;
result:=result+seragham((j mod 1000000000)div 1000000);
if ok then result:=result+I_ml+v;
result:=result+seragham((j mod 1000000)div 1000);
if ok then result:=result+I_hz+v;
result:=result+seragham(j mod 1000);
if not ok then result:=copy(result,1,length(result)-3);

if pos('.',FloatToStr(i)) <> 0 then begin
Result := Result + ' مميز ';
jj := copy( FloatToStr(i),pos('.',FloatToStr(i))+1,100);
j := StrToInt64Def(jj,0);

result:=result + seragham(j div 1000000000000);
if ok then result:=result+I_tr+v;
result:=result+seragham((j mod 1000000000000)div 1000000000);
if ok then result:=result+I_mr+v;
result:=result+seragham((j mod 1000000000)div 1000000);
if ok then result:=result+I_ml+v;
result:=result+seragham((j mod 1000000)div 1000);
if ok then result:=result+I_hz+v;
result:=result+seragham(j mod 1000);
if not ok then result:=copy(result,1,length(result);-3);

Result := Result + FloatPoint[length(JJ)];


end;


if i=0 then result:='Ziro';
end;
end.

Mahmood_M
سه شنبه 08 فروردین 1396, 14:45 عصر
خوب چه مشکلی پیش میاد دوست عزیز ؟
توضیح بدید لطفا

JASEM128
جمعه 11 فروردین 1396, 13:55 عصر
این قسمت floatToStr ایراد میگیره


ok:=false;
if pos('.',FloatToStr(i)) <> 0 then
jj := copy( FloatToStr(i),1,pos('.',FloatToStr(i))-1)
else jj := FloatToStr(i);
j := StrToInt64Def(jj,0);
result:=seragham(j div 1000000000000);
if ok then result:=result+I_tr+v;
result:=result+seragham((j mod 1000000000000)div 1000000000);
if ok then result:=result+I_mr+v;
result:=result+seragham((j mod 1000000000)div 1000000);
if ok then result:=result+I_ml+v;
result:=result+seragham((j mod 1000000)div 1000);
if ok then result:=result+I_hz+v;
result:=result+seragham(j mod 1000);
if not ok then result:=copy(result,1,length(result)-3);

if pos('.',FloatToStr(i)) <> 0 then begin
Result := Result + ' ããíÒ ';
jj := copy( FloatToStr(i),pos('.',FloatToStr(i))+1,100);
j := StrToInt64Def(jj,0);

result:=result + seragham(j div 1000000000000);
if ok then result:=result+I_tr+v;
result:=result+seragham((j mod 1000000000000)div 1000000000);
if ok then result:=result+I_mr+v;
result:=result+seragham((j mod 1000000000)div 1000000);
if ok then result:=result+I_ml+v;
result:=result+seragham((j mod 1000000)div 1000);
if ok then result:=result+I_hz+v;
result:=result+seragham(j mod 1000);
if not ok then result:=copy(result,1,length(result);-3);

Result := Result + FloatPoint[length(JJ)];


end;


if i=0 then result:='Ziro';
end;
end.

Ananas
جمعه 11 فروردین 1396, 20:19 عصر
...
if not ok then
result := copy(result, 1, length(result) - 3);

result := result + FloatPoint[length(JJ)];

end;

if i = 0 then
result := 'Ziro';
end;

JASEM128
پنج شنبه 17 فروردین 1396, 02:01 صبح
کجاست یاری دهنده ای که مرا یاری کند؟:افسرده: