程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi編制金額大寫轉換程序

用Delphi編制金額大寫轉換程序

編輯:Delphi

  在從事與財務相關的軟件開發過程中,通常要求將小寫金額轉換成相應的大寫金額,並打印在大寫金額欄中。下面是用Delphi3.0編制的一個轉換函數,能夠方便的在程序中調用,並返回字符串。

  1.定義函數num—str

  function num—str(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,pos(′.′,dx—str)-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 b:=′′;

  dx—str:=dx—str+a+b;

   end;

   if ls=0 then dx—str:=′零元整′;

   dx—str:=fu+dx—str;

  //函數返回字符串

   Result:=dx—str;

  end;

  2.調用方法

  函數參數采用Variant類型,調用時參數值可以是實型,也可以是字符串,非常方便,下面舉例說明:

  新建窗口,在相應pas文件中加入num—str函數,並在窗口中添加Button1和Edit1、Edit2控件,雙擊Button1輸入以下代碼,運行程序即可:

   procedure TForm1.Button1Click(Sender: TObject);

   begin

   Edit1.text:=num—str(202055010.32);

   //也可以在Edit2中輸入數串調用

   //Edit1.text:=num—str(Edit2.text);

   end;

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved