⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uppermoney_u.pas

📁 县级供电企业电费核算源码, 在客户处正常运行8年以上, Delphi 5开发,数据库为Interbase/Firebird, 深入使用Procedure和Trigger等, 对入门者具有很好的参考价值
💻 PAS
字号:
unit UpperMoney_U;

interface
	function UpperMoney(ls: Variant): String;

implementation
Uses
	Sysutils;

function UpperMoney(ls: Variant): String;
var
	dx_sz,dx_dw,str_int,str_dec,dx_str,fu:string;
	a,b,b2,c,d:string;
  	num_int,num_dec,len_int,i,a_int,pp:integer;
  	//dx_str为返回字符串
begin
	dx_sz:='零壹贰叁肆伍陆柒捌玖';
  	dx_dw:='万仟佰拾亿仟佰拾万仟佰拾元';
  	//处理金额小于零情况
  	if ls<0 then
  	begin
  		ls:=ls*(-1);
   		fu:='负';
  	end
    else
    	fu:='';
  	//取得整数值及整数串
  	dx_str:=ls;
  	if (ls >0) and (ls<1) then
  		dx_str:='0'+dx_str;
  	pp:=pos('.',dx_str);
  	if pp > 0 then//带有小数
		str_int:=copy(dx_str,1,pp-1)//取出整数部分
  	else
		str_int:=dx_str;

  	num_int:=StrToInt(str_int);
  	//取得小数值及小数串
  	if (ls>0)and(ls<1) then
		num_dec:=ls*100
  	else
		num_dec:=(ls-num_int)*100;
  	str_dec:=inttostr(num_dec);

  	len_int:=Length(str_int);

 	dx_str:='';

  	//转换整数部分
   	for i:=1 to len_int do
   	begin
  		//a为小写数字字符,b为对应的大写字符
  		//c为对应大写单位,d为当前大写字符串的最后一个汉字
	  	a:=copy(str_int,i,1);
   		a_int:=strtoint(a);
   		b:=copy(dx_sz,(a_int*2+1),2);
   		c:=copy(dx_dw,((13-len_int+i-1)*2+1),2);
   		if dx_str<>'' then
   			d:=copy(dx_str,Length(dx_str)-1,2)
   		else
			d:='';
   		if (b='零')and((d='零')or(b=b2)or(c='元')or(c='万')or(c='亿')) then
        	b:='';

   		if (a='0')and(c<>'元')and(c<>'万')and(c<>'亿') then
        	c:='';

   		if ((c='元')or(c='万')or(c='亿'))and (d='零')and(a='0') then
   		begin
   			dx_str:=copy(dx_str,1,Length(dx_str)-2);

	   		d:=copy(dx_str,Length(dx_str)-1,2);

   			if ((c='元')and(d='万'))or((c='万')and(d='亿')) then
				c:='';
   		end;
   		dx_str:=dx_str+b+c; b2:=b;
   	end;

  	//处理金额小于1的情况
  	if Length(dx_str)<=2 then
  		dx_str:='';
  	//转换小数部分
  	if (num_dec<10)and(ls>0) then
  	begin
  		a_int:=strtoint(str_dec);
  		b:=copy(dx_sz,(a_int*2+1),2);
  		if num_dec=0 then
			dx_str:=dx_str+'整';
	  	if num_dec>0 then
    		dx_str:=dx_str+'零'+b+'分';
  	end;

  	if num_dec>=10 then
  	begin
  		a_int:=strtoint(copy(str_dec,1,1));

  		a:=copy(dx_sz,(a_int*2+1),2);

  		a_int:=strtoint(copy(str_dec,2,1));

  		b:=copy(dx_sz,(a_int*2+1),2);

  		if a<>'零' then
			a:=a+'角';

  		if b<>'零' then
			b:=b+'分'
  		else
		Begin
        	b:='';
            a:=a+'整';
        End;
  		dx_str:=dx_str+a+b;
   	end;

   	if ls=0 then
		dx_str:='零元整';
   	dx_str:=fu+dx_str;

  	//函数返回字符串
   	Result:=dx_str;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -