在fastreport裡轉換金額大小寫
阿新 • • 發佈:2019-01-01
在fastreport的pascalscript裡面我沒有搞明白怎麼呼叫sysutil……所以寫了一個比較笨辦法的轉換函式
不過好處是應該適用於所有版本——因為使用的是最基礎的東西……
只能轉換小於一萬億的數字,更大的得改寫一下。
function MoneyToCharacter(Money:real):string; //數字轉換為中文大寫 var temp:string; resu:string; jf:string; i,j,j_1,jiao,fen:integer; len:integer; Num:array[0..9] of string; A:array[0..13] of string; begin Num[0]:='零'; num[1]:='壹'; Num[2]:='貳'; num[3]:='叄'; Num[4]:='肆'; num[5]:='伍'; Num[6]:='陸'; num[7]:='柒'; Num[8]:='捌'; num[9]:='玖'; a[0]:='分'; a[1]:='角'; a[2]:='元'; a[3]:='拾'; a[4]:='佰'; a[5]:='仟'; a[6]:='萬'; a[7]:='拾'; a[8]:='佰'; a[9]:='仟'; a[10]:='億'; a[11]:='拾'; a[12]:='佰'; a[13]:='仟'; temp:=trim(inttostr(trunc(round(money*100)))); len:=length(temp); resu:=''; if (len>13) or (len=0) then begin exit; end; jiao:=strtoint(copy(temp,len-1,1)); fen:=strtoint(copy(temp,len,1)); if (fen=0) then begin if (jiao=0) then begin jf:='整'; end else begin jf:=num[jiao]+'角整'; end; end else begin if (jiao=0) then begin jf:='零'+Num[fen]+'分'; end else begin jf:=num[jiao]+'角'+num[fen]+'分'; end; end; for i:=1 to len-2 do begin j:=strtoint(copy(temp,i,1)); if (j=0) then begin j_1:=strtoint(copy(temp,i+1,1)); if (j_1=0) then begin continue; end; if (a[len-i]='萬') or (a[len-i]='億') then begin resu:=resu+a[len-i]+num[j]; end else if (a[len-i]='元') then begin resu:=resu+'元'; end else begin resu:=resu+num[j]; end; end else begin resu:=resu+num[j]+a[len-i]; end; end; result:=resu+jf; end; begin end.