1026
魔獸
fastreport腳本函數實 現金額大小寫轉換
fastreport模板中允許PascalScript,c++ Script ,BasicScript,JScript 腳本。
我使用 PascalScript實現把客戶金額由阿拉伯數字(小寫)轉換為數字大寫( 壹(壹)、貳(貳)、叁、肆(肆)、伍(伍)、陸(陸)、柒、捌、玖、拾、佰、仟、萬(萬)、億、元、角、分、零、整(正) )。
網上搜啦Delphi中實現大小寫的網友自寫函數 NumToChar 。 NumToChar 使用Delphi內置函數 StringReplace , StringReplace 在腳本中不能引用,便仿照內置 StringReplace 添瓦加磚,最後實現啦功能。
代碼如下:
function StringReplace(const S, OldPattern, NewPattern: string): string;
var
SearchStr, Patt, NewStr: string;
Offset: Integer;
begin
SearchStr := S;
Patt := OldPattern;
NewStr := S;
Result := '';
while SearchStr <> '' do
begin
Offset := Pos(Patt, SearchStr);
if Offset = 0 then
begin
Result := Result + NewStr;
Break;
end;
Result := Result + Copy(NewStr, 1, Offset - 1) + NewPattern;
NewStr := Copy(NewStr, Offset + Length(OldPattern), 2147483647);
SearchStr := Copy(SearchStr, Offset + Length(Patt), 2147483647);
end;
end;
function NumToChar(const n: string): string; //可以到萬億,並且可以隨便擴大範圍
var i : Integer;tmp:real;
cNum: String = '零壹貳叁肆伍陸柒捌玖--萬仟佰拾億仟佰拾萬仟佰拾元角分';
cCha1:array[0..12]of string =
[ '零元','零拾','零佰','零仟','零萬','零億','億萬','零零零','零零','零萬','零億','億萬','零元'];
cCha2:array[0..12]of string = [ '元','零','零','零','萬','億','億','零','零','萬','億','億','元'];
sNum,sTemp : String;
begin
result :='';
tmp := strtofloat(n);
sNum := format('%15d',[round(tmp * 100)]);
for i := 0 to 14 do
begin
stemp := copy(snum,i+1,1);
if stemp=' ' then continue
else result := result + cNum[strtoint(stemp)+1] + cNum[i+13];
end;
for i:= 0 to 12 do
Result := StringReplace(Result, cCha1[i], cCha2[i]);
if pos('零分',result)=0 then
Result := StringReplace(Result, '零角', '零')
else Result := StringReplace(Result, '零角','整');
Result := StringReplace(Result, '零分','');
end;
最後更新:2017-04-26 21:31:01