版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、function TffqkForm.SmallTOBig(small:real):string; var SmallMonth,BigMonth:string; wei1,qianwei1:string2; qianwei,dianweizhi,qian:integer; begin - 修改参数令值更精确 - 小数点后的位数,需要的话也可以改动该值 qianwei:=-2; 转换成货币形式,需要的话小数点后加多几个零 Smallmonth:=formatfloat( 0.00 ,small); - dianweizhi :=pos( . ,Smallmonth);小数点的位置 循环小写货币
2、的每一位,从小写的右边位置到左边 for qian:=length(Smallmonth) downto 1 do begin 如果读到的不是小数点就继续 if qian dianweizhi then begin 位置上的数转换成大写 case strtoint(copy(Smallmonth,qian,1) of 1:wei1:= 壹 ; 2:wei1:= 贰 ; 3:wei1:= 叁 ; 4:wei1:= 肆 ; 5:wei1:= 伍 ; 6:wei1:= 陆 ; 7:wei1:= 柒 ; 8:wei1:= 捌 ; 9:wei1:= 玖 ; 0:wei1:= 零 ; end; 判断大写位
3、置,可以继续增大到real类型的最大值,可是谁有那么多钱 case qianwei of -3:qianwei1:= 厘 ; -2:qianwei1:= 分 ; -1:qianwei1:= 角 ; 0 :qianwei1:= 元 ; 1 :qianwei1:= 拾 ; 2 :qianwei1:= 佰 ; 3 :qianwei1:= 千 ; 4 :qianwei1:= 万 ; 5 :qianwei1:= 拾 ; 6 :qianwei1:= 佰 ; 7 :qianwei1:= 千 ; 8 :qianwei1:= 亿 ; 9 :qianwei1:= 十 ; 10:qianwei1:= 佰 ; 11:
4、qianwei1:= 千 ; end; inc(qianwei); BigMonth :=wei1+qianwei1+BigMonth;组合成大写金额 end; end; SmallTOBig:=BigMonth; end;Function XiaoxieToDaxie(f : String) : String; 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:= ;
5、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
6、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 := co
7、py(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
8、 i := 1 To lx do begin if i=1 then begin jg := jg + copy(dx, strtoint(copy(xs,i,1)*2 + 1, 2); jg := jg + 角 ; end; if i=2 then begin jg := jg + copy(dx, strtoint(copy(xs,i,1)*2 + 1, 2); jg := jg + 分 ; end; end; j :=AnsiPos( 零角零分 ,jg); if j 0 then jg := copy(jg,1,j-1)+copy(jg,j+8,200)+ 整 ; j := AnsiPo
9、s( 零角 ,jg); if j 0 then jg := copy(jg,1,j-1)+copy(jg,j+4,200); j := AnsiPos( 零分 ,jg); if j 0 then jg := copy(jg,1,j-1)+copy(jg,j+4,200); End else jg := jg + 元整 ; result := fs+jg; end;function tfrmmain.num(dblarabic:string):string; var one:array0.9 of string; i:integer; j:integer; sarabic:string; sin
10、tarabic:string; strArabic:string; strArabic1:string; function ConvertStr(const sBeConvert: string): string; var x: integer; begin Result := ; for x := Length(sBeConvert) downto 1 do /AppendStr(Result, sBeConvertx); end; begin one0:= ; one1:= 一 ; one2:= 二 ; one3:= 三 ; one4:= 四 ; one5:= 五 ; one6:= 六 ;
11、 one7:= 七 ; one8:= 八 ; one9:= 九 ; sarabic:=dblarabic; sintarabic:= convertstr(sarabic); for i:=1 to length(sintarabic) do begin strArabic:=midstr(sintarabic,i,1); for j:=0 to 9 do if j=strtoint(strarabic) then begin strarabic1:=onej+strarabic1; end; num:=strarabic1; if i=length(sintarabic) then exit
12、; end; end;函数功能: 输入:double的数字串(数字小写) 处理:DoubleToChinese(Value:string):Widestring; 输出:对应的中文大写 - 程序所用到的数据 单位: 十 d (ecade) 百 h (undred) 千 t (housand) 万 w 亿 y - 数字: 零: 0 壹: 1 贰: 2 叁: 3 肆: 4 伍: 5 陆: 6 柒: 7 捌: 8 玖: 9 - 点: . - 具体实现: 声明: 常量:(Const) 内部函数(private) 1.取小数点位置函数:GetDotPosition(Value:string):integ
13、er; 2.去左边0的函数:TrimZeroLeft(Value:string):string; 3.去右边0的函数:TrimZeroRight(Value:string):string; 4.取整数部分:GetInteger(Value:string):string; 5.取小数部分:GetDecimal(Value:string):string; 6.加0的函数:AddZeroLeft(Value:string):string; 7.对整数开始进行过渡转换:TransitionStart(Value:string):string;/有些混乱 8.对整数完成进行过渡转换:Transition
14、End(Value:string):string;/有些混乱 9.转换整数部分:IntegerToChinese(Value:string):widestring; 10.转换小数部分:DecimalToChinese(Value:string):widestring; 外部函数 11.合并整数和小数的结果:DoubleToChinese(Value:string):string; 定义: 内部函数(private) 1.取小数点位置函数:GetDotPosition(Value:string):integer; 输入:需要进行转换的原始字符串Originality 输出: 如果Value 为
15、空,则返回 如果没有小数点,返回 0; 有小数点,返回 小数点在 Value 中的索引值 2.去左边0的函数:TrimZeroLeft(Value:string):string; 输入:需要进行转换的原始字符串Originality 输出: 如果Value为空,则返回 空; 去掉Value左边的0,直到Value左边不为0,返回去0后的Value 3.去右边0的函数:TrimZeroRight(Value:string):string; 输入:需要进行转换的原始字符串Originality 输出: 如果Value为空,则返回 空; 去掉Value右边的0,直到Value右边不为0,返回去0后的
16、Value 4.取整数部分:GetInteger(Value:string):string; 输入:TrimZeroLeft(Value:string):string; 函数的结果 输出: 如果没有整数部分,则返回 (空字符串) 有,返回 整数 字符串 5.取小数部分:GetDecimal(Value:string):string; 输入:TrimZeroRight(Value:string):string; 输出: 如果没有小数部分,则返回 (空字符串) 有,返回 小数 字符串 6.加0的函数:AddZeroLeft(Value:string):string; 输入:GetInteger(V
17、alue:string):string;函数的结果 输出: 如果输入为空,则输出为空 不为空 如果Value的长度为四的倍数,则直接返回Value; 不是四的倍数,则在Value前面添加0,直到其是四的倍数,返回添加0后的Value 7.对整数开始进行过渡转换:TransitionStart(Value:string):string; 输入:AddZeroLeft(Value:string):string;函数的结果 输出: 如果输入为空,则返回为空 不为空 由于AddZeroLeft的作用,使得Value的长度正好是四的倍数,假设分N组,一定有N =1; 将Value分成N组,每组对应Val
18、ue中的连续的四个字符; 在Value中,越是后面的的字符,其组号越小; 对每一组,依次判断每一位是否不为0,不是,就在这位后面加一个单位 d (拾)、 h (百)、 t (千)或不加其中的一个 是,不加; 然后再将刚才的组内部的四次判断结果,结合新组; 对每一组,判断其组号码,如果是1,则此组不加; 如果大于1,则判断组号取2模,结果为0,此组后加 w (万) 结果为1,此组后加 y (亿) 将各组的结果组合在一起,作为返回值; 8.对整数完成进行过渡转换:TransitionEnd(Value:string):string; 输入:TransitionStart(Value:string):string;函数的结果 输出: 如果输入为空,则输出为空 不为空 去掉Value中,前面不是数字的字符,直到Value的第一个字符是数字: 去掉Value中直接跟在 y (亿)后面的 w (万) 此时返回Value 9.转换整数部分:IntegerToChinese(Value:string):widestring; 输入:TransitionEnd(Value:string):string;函数的结果 输出: 如果输入为空,则输出为空 不为空,按照顺序将Value中的每个字符转换成其中文大写形式,并按照原顺序组合成中文字符串
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论