function changeRmb(const strRmb:string):string;
var txt,strhighlevel:string; i,n,m,ilen,ipos:Integer; //n记录整数部分长度,m记录分数部分长度 strarray,strlevel:array of string; p:pchar; ispoint:boolean;//判断是否有小数点begin ispoint:=false; result:=''; ipos:=0; m:=0; txt:=Trim(strRmb); i:=1; p:=PChar(txt);//去除开头的0,以及.if ((txt[1]='0') and (txt[2]<>'.')) or (txt[1]='.') thenbegin ShowMessage('第1位不能为0或者是.,退出操作'); exit;end;//检查字符的合法性while (i<length(txt))dobeginif (p^>'9') or ((p^<'0') and (P^<>'.')) then //ord('.')=46begin ShowMessage(PChar('第'+inttostr(i)+'位包含非数字字符,将退出操作')); Exit;end;if P^='.' thenif ispoint thenbegin showmessage('太多小数点,将退出!'); exit;endelsebegin ipos:=i; ispoint:=true;end; Inc(p); Inc(i);end;//while ilen:=Length(txt);if ispoint thenbegin n:=ipos-1; m:=ilen-ipos;endelse n:=ilen;//判断是否超过万,或亿if m>3 thenbegin ShowMessage('小数点后位数超过3,无法转换!'); Exit;end; SetLength(strarray,ilen+8); SetLength(strlevel,ilen+8);for i:=iLen downto 1 dobeginif txt[i]<>'.' thencase strtoint(txt[i]) of1:strarray[i]:='壹';2:strarray[i]:='贰';3:strarray[i]:='叁';4:strarray[i]:='肆';5:strarray[i]:='伍';6:strarray[i]:='陆';7:strarray[i]:='柒';8:strarray[i]:='捌';9:strarray[i]:='玖';0:begin strarray[i]:='零';if i<ilen then //如果低位也为零,低位零不显示if (strarray[i+1]= '') or (strarray[i+1]= '零') thenbegin//strarray[i+1]:= ''; strarray[i]:= '';end;if i=n then strarray[i]:=''; strlevel[i]:='';end;end; //caseend;//先处理 小数点部分if m>0 thenbeginfor i:=m downto 1 dobegin strlevel[ipos+i]:='';case i-1 of0:if txt[ipos+i]='0' then strarray[ipos+i]:=''else strlevel[ipos+i]:='角';1:if txt[ipos+i]='0' then strarray[ipos+i]:=''else strlevel[ipos+i]:='分';2:if txt[ipos+i]='0' then strarray[ipos+i]:=''else strlevel[ipos+i]:='厘';end; Result:=strarray[ipos+i]+strlevel[ipos+i]+result;end;end;if ispoint and (txt[ipos-1]='0') and (n=1) then Result:=result+'' //如果少于1块时,不要显示元。else Result:='元'+result;for i:=n downto 1 dobegincase n-i of0,4,8,12: strlevel[i]:='';1,5,9,13: strlevel[i]:='拾';2,6,10,14: strlevel[i]:='佰';3,7,11,15: strlevel[i]:='仟';end; //caseif (txt[i]='0') then strlevel[i]:='';//要处理零 以及加上万、亿if n-i=4 thenbeginif strarray[i]='零' then strarray[i]:=''; Result:=strarray[i]+strlevel[i]+'万'+resultendelse if n-i=8 thenbeginif strarray[i]='零' then strarray[i]:=''; Result:=strarray[i]+strlevel[i]+'亿'+resultend //beginelse if n-i=12 thenbeginif strarray[i]='零' then strarray[i]:=''; Result:=strarray[i]+strlevel[i]+'兆'+resultend //beginelse Result:=strarray[i]+strlevel[i]+result;end; //forResult := Result + '整';end;