fastreport脚本函数实现金额大小写转换

2016-11-19 12:14:35来源:oschina作者:千里之行12人点击

fastreport模板中允许PascalScript,c++ Script ,BasicScript,JScript 脚本。


我使用 PascalScript实现把客户金额由阿拉伯数字(小写)转换为数字大写( 壹(壹)、贰(贰)、叁、肆(肆)、伍(伍)、陆(陆)、柒、捌、玖、拾、佰、仟、万(万)、亿、元、角、分、零、整(正) )。


网上搜啦Delphi中实现大小写的网友自写函数 NumToChar 。 NumToChar 使用Delphi内置函数 StringReplace , StringReplace 在脚本中不能引用,便仿照内置 StringReplace 添瓦加砖,最后实现啦功能。


代码如下:


function StringReplace(const S, OldPattern, NewPattern: string): string; varSearchStr, Patt, NewStr: string;Offset: Integer; begin SearchStr := S;Patt := OldPattern;NewStr := S;Result := '';while SearchStr <> '' dobeginOffset := Pos(Patt, SearchStr);if Offset = 0 thenbeginResult := 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;beginresult :='';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;

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台