我这里有一个转换函数,要的话留下E_Mail.
解决方案 »
- dephi中如何列出班级所有成员?
- 如何通过编程获得硬盘的分区名
- 已知某个文件的全部路径,如d:\aa\bbb\ccc\0.jpg 如何得到0.jpg的父目录名称cc呢?
- 我在Delphi中,即使编译运行一个最简单的程序,结束的时候也会跳出汇编窗口,为什么?
- 请问dbGridEh如何导出为txt或者csv文件?
- 如何在内存中开辟一个区域用来保存从网上下载的excel文档?
- Operator not applicable to this operand type
- DELPHI6.0中我用SQL在创建基本表的时候有如下错误:有解决之道者50分送赠。
- DELPHI 6.0 序列号?????
- 如何在delphi5打开delph6的程序?
- 有没有可以把人民币的小写转换成大写的函数或别的什么东西?特急,谢谢!
- 请问如何用D6调用16位动态连接库?(即如何用32位的程序调用16位的动态连接库)
我正在找你呢,我的email: [email protected] 谢谢!
var
numberunit: array[1..16] of string;{单位数组}
numbervalue: array[1..10] of string;{数字数组}
number2:string;{角分数串}
number1:string;{元以上数串}
numbertmp:string;{临时数串}
i:integer; {循环变量}
flag:integer;{角元分隔}
zeroflag:integer;{本位零标志 0:本位不为零 1:本位为零}
fzeroflag:integer;{低位是否有非零数标志 0:低位无非零数 1:低位有非零数}
ooflag:integer;{最高位是否为零标志 0:最高位为零 1:最高位不为零}
resulttotal:string;{总结果串}
result1:string;{元以上结果串}
result2:string;{角分结果串}
Begin
numberunit[2] :='分';
numberunit[1] :='角';
numberunit[3] :='元';
numberunit[4] :='拾';
numberunit[5] :='佰';
numberunit[6] :='仟';
numberunit[7] :='万';
numberunit[8] :='拾';
numberunit[9] :='佰';
numberunit[10] :='仟';
numberunit[11] :='亿';
numberunit[12] :='拾';
numberunit[13] :='佰';
numberunit[14] :='仟';
numberunit[15] :='万';
numberunit[16] :='亿';
numbervalue[1] :='零';
numbervalue[2] :='壹';
numbervalue[3] :='贰';
numbervalue[4] :='叁';
numbervalue[5] :='肆';
numbervalue[6] :='伍';
numbervalue[7] :='陆';
numbervalue[8] :='柒';
numbervalue[9] :='捌';
numbervalue[10] :='玖';
number2 :='';
number1 :='';
{分解角分元数串}
flag:=1;
for i:=1 to length(number) do
begin
if number[i]='.' then Flag :=2;
if flag=1 then number1:=number1+number[i]
else
if number[i]<>'.' then number2 := number2+number[i];
end;
{除高位零}
numbertmp := number1;
number1 := '';
ooflag := 0;
for i:=1 to length(numbertmp) do
begin
if (numbertmp[i]<>'0') then ooflag:=1;
if ooflag=1 then number1:=number1+numbertmp[i];
end;
{最大值为亿亿元}
if length(number1)>14 then
begin
showmessage('numbercnv out of range!');
SmallToBig:='';
end;{组织元以上结果串}
result1:='';
zeroflag:=0;
Fzeroflag:=1;
for i:=length(number1) downto 1 do
begin
if (i=length(number1)) and (strtoint(number1[i])=0) then{个位为零时}
begin
fzeroflag:=0;
zeroflag:=1;
result1:='元';
end
else
if (i begin
if (length(number1)-i=4) or (length(number1)-i=8) then{万与亿位设定}
begin
if (length(number1)-i=4) and (length(number1)>=8) then
begin
if NOT((length(number1)-i=4)and(strtoint(number1[i])=0)
and(strtoint(number1[i-1])=0) and(strtoint(number1[i-2])=0)
and(strtoint(number1[i-3])=0)) then
result1:=numberunit[length(number1)-i+3]+result1;
end
else
result1:=numberunit[length(number1)-i+3]+result1;
fzeroflag:=0;
end;
if fzeroflag=1 then{中间零设置}
if zeroflag=0 then
result1:=numbervalue[strtoint(number1[i])+1]+result1;
zeroflag:=1;
end
else{非零数处理}
begin
fzeroflag:=1;
zeroflag:=0;
result1:=numberunit[length(number1)-i+3]+result1;
result1:=numbervalue[strtoint(number1[i])+1]+result1;
end;
end;
{组织角分结果串}
result2:='';
for i:=1 to length(number2) do
begin
if i<3 then
begin
if strtoint(number2[i])<>0 then
begin
result2:=result2+numbervalue[strtoint(number2[i])+1];
result2:=result2+numberunit[i];
end;
end;
end;
ResultTotal := Result1+Result2;
SmallToBig := ResultTotal;
End;
非常感谢,能不能帮忙看一下http://www.csdn.net/Expert/topic/425/425203.shtm
谢谢!
var Fs,dx,d2,zs,xs,h,jg:string;
i,ws,l,w,j,lx:integer;
begin
f := Trim(f);
if copy(f,1,1)='-' then begin
Delete(f,1,1);fs:='负';end
else fs:=''; dx:='零一二三四五六七八九';
d2:='十百千万亿';
i := AnsiPos('.',f); //小数点位置
If i = 0 Then
zs := f //整数
Else begin
zs:=copy(f,1,i - 1); //整数部分
xs:=copy(f,i + 1,200);
End;
ws:= 0; l := 0;
For i := Length(zs) downTo 1 do begin
ws := ws + 1; h := '';
w:=strtoint(copy(zs, i, 1));
if (w=0) and (i=1) then jg:='零';
If w > 0 Then
Case ws of
2..5:h:=copy(d2,(ws-1)*2-1,2);
6..8:begin
h:=copy(d2,(ws-5)*2-1,2);
If AnsiPos('万',jg)=0 Then h:=h+'万';
end;
10..13:h := copy(d2,(ws-9)*2-1, 2);
End;
jg:=copy(dx,(w+1)*2-1,2) + h + jg;
If ws=9 Then jg := copy(jg,1,2) + '亿' + copy(jg,3,200);
end;
j:=AnsiPos('零零',jg);
While j > 0 do begin
jg := copy(jg, 1, j - 1) + copy(jg, j + 2,200);
j := AnsiPos('零零',jg);
end;
If (Length(jg) > 1) And (copy(jg,length(jg)-1,2)='零') Then jg :=copy(jg,1,Length(jg)-2);
j := AnsiPos('零亿',jg);
If j > 0 Then jg := copy(jg,1, j - 1) + copy(jg, j + 2,200);
//转换小数部分
lx := Length(xs);
If lx > 0 Then begin
jg := jg + '点';
For i := 1 To lx do
jg := jg + copy(dx, strtoint(copy(xs,i,1))*2 + 1, 2)
End;
DXZhuanHuan := fs+jg;
End;
在我那个帖子上,你给我的设置连续进纸的函数,能不能给我讲一下?
Function TFormFhdCw.XxToDx(const hjnum:real):String;
var Vstr,zzz,cc,cc1,Presult:string;
xxbb:array[1..12]of string;
uppna:array[0..9] of string;
iCount,iZero,vPoint,vdtlno:integer;
begin
//*设置大写中文数字和相应单位数组*//
xxbb[1]:='亿';
xxbb[2]:='仟';
xxbb[3]:='佰';
xxbb[4]:='拾';
xxbb[5]:='万';
xxbb[6]:='仟';
xxbb[7]:='佰';
xxbb[8]:='拾';
xxbb[9]:='元';
xxbb[10]:='.';
xxbb[11]:='角';
xxbb[12]:='分';
uppna[0]:='零';
uppna[1]:='壹';
uppna[2]:='贰';
uppna[3]:='叁';
uppna[4]:='肆';
uppna[5]:='伍';
uppna[6]:='陆';
uppna[7]:='柒';
uppna[8]:='捌';
uppna[9]:='玖';
Str(hjnum:12:2,Vstr);
cc:='';
cc1:='';
zzz:='';
result:='';
presult:='';
iZero:=0;
vPoint:=0;
for iCount:=1 to 10 do
begin
cc:=Vstr[iCount];
if cc<>' ' then
begin
zzz:=xxbb[iCount];
if cc='0' then
begin
if iZero<1 then //*对“零”进行判断*//
cc:='零'
else
cc:='';
if iCount=5 then //*对万位“零”的处理*//
if copy(result,length(result)-1,2)='零' then
result:=copy(result,1,length(result)-2)+xxbb[iCount]
+'零'
else
result:=result+xxbb[iCount];
cc1:=cc;
zzz:='';
iZero:=iZero+1;
end
else
begin
if cc='.' then
begin
cc:='';
if (cc1='') or (cc1='零') then
begin
Presult:=copy(result,1,Length(result)-2);
result:=Presult;
iZero:=15;
end;
if iZero>=1 then
zzz:=xxbb[9]
else
zzz:='';
vPoint:=1;
end
else
begin
iZero:=0;
cc:=uppna[StrToInt(cc)];
end
end;
result:=result+(cc+zzz)
end;
end;
If Vstr[11]='0' then //*对小数点后两位进行处理*//
begin
if Vstr[12]<>'0' then
begin
cc:='零';
result:=result+cc;
cc:=uppna[StrToInt(Vstr[12])];
result:=result+(uppna[0]+cc+xxbb[12]);
end
end
else
begin
if iZero=15 then
begin
cc:='零';
result:=result+cc;
end;
cc:=uppna[StrToInt(Vstr[11])];
result:=result+(cc+xxbb[11]);
if Vstr[12]<>'0' then
begin
cc:=uppna[StrToInt(Vstr[12])];
result:=result+(cc+xxbb[12]);
end;
end;
result:=result+'正';
end;
您不能给自己加分,请返回重新输入......, 返回上一页。 >>>
结账时怎么总是这个提示,也不管总分多少,不好意思,晚一点再结!
var iNumLength:Integer;//数字长度
i,k:Integer;
sNumber:String;
arChinseUnit:Array [0..13] of String;
arALB:Array [0..9] of String;
bZeroFlag,bHasUnit:Boolean;
begin
arChinseUnit[0] :='分'; arChinseUnit[1] :='角'; arChinseUnit[2] :='元';
arChinseUnit[3] :='拾'; arChinseUnit[4] :='佰'; arChinseUnit[5] :='仟';
arChinseUnit[6] :='万'; arChinseUnit[7] :='拾'; arChinseUnit[8] :='佰';
arChinseUnit[9] :='仟'; arChinseUnit[10] :='亿'; arChinseUnit[11] :='拾';
arChinseUnit[12] :='佰'; arChinseUnit[13] :='仟';
arALB[0]:='零'; arALB[1]:='壹'; arALB[2]:='贰'; arALB[3]:='叁'; arALB[4]:='肆';
arALB[5]:='伍'; arALB[6]:='陆'; arALB[7]:='柒'; arALB[8]:='捌'; arALB[9]:='玖'; Try
sNumber:=Trim(FloatToStr(Abs(Number)));
Except
Result:='转换出错!';
Exit;
end;
i:=Pos('.',sNumber);
iNumLength:=StrLen(PChar(sNumber));
if (iNumLength-i>13) or (i>13) then begin //整数超过14位
Result:='数字太大,无法转换!';
Exit;
end;
if ( ( (iNumLength-i)>=3 ) and (i>0) ) then //处理小数点后大于2位的情况
sNumber:=Copy(sNumber,1,i+2);
if ( ( (iNumLength-i)=1 ) and (i>0) ) then //处理小数点后只有一位的情况补足零
sNumber:=sNumber+'0';
if i=0 then //处理无小数的情况,无小数点
sNumber:=sNumber+'.00';
if i=iNumLength then //处理无小数的情况,有小数点
sNumber:=sNumber+'00'; i:=Pos('.',sNumber);
sNumber:=Copy(sNumber,1,i-1)+Copy(sNumber,i+1,2);
iNumLength:=StrLen(PChar(sNumber));
bZeroFlag:=False;
bHasUnit:=False;
Result:='';
For I:=1 to iNumLength do begin //处理整数部分
k:=StrToInt(Copy(sNumber,i,1)); if k<>0 then begin
bHasUnit:=False;
if bZeroFlag then begin
Result:=Result+'零'+arALB[k]+arChinseUnit[iNumLength-i];
bZeroFlag:=False;
end else //end if bZeroFlag
Result:=Result+arALB[k]+arChinseUnit[iNumLength-i];
end; if k=0 then begin
if ( (arChinseUnit[iNumLength-i]<>'角') and (arChinseUnit[iNumLength-i]<>'拾')
and (arChinseUnit[iNumLength-i]<>'佰')
and (arChinseUnit[iNumLength-i]<>'仟')) then
if not bHasUnit then begin
Result:=Result+arChinseUnit[iNumLength-i];
bHasUnit:=True;
end; //end if not bHasUnit
bZeroFlag:=True;
if (arChinseUnit[iNumLength-i]='元') then
bZeroFlag:=False;
end;//end k=0 end;//end for //处理小数部分的最后一位
k:=StrToInt(Copy(sNumber,iNumLength,1));
if k=0 then
if Copy(Result,Length(Result)-1,2)='元' then
Result:=Result+'整'
else
Result:=Copy(Result,1,Length(Result)-2)+'整'; if ((Length(sNumber)=3) and (StrToInt(sNumber)<100)) then
Result:=Copy(Result,3,Length(Result)-2); if ((Length(sNumber)=3) and (StrToInt(sNumber)<10)) then
Result:=Copy(Result,3,Length(Result)-2);
if Number<0 then
Result:='币:负'+Result
else
Result:='币:'+Result;
end;