求一个在单据套打中使用的大写金额特殊写法的函数?

HelpMeNow 2003-05-21 11:28:52
在已印刷好的单据:
总计: 万 仟 佰 拾 元 角 分
现欲将实现套打如何实现,并把没有的地方直接赋予大写的零.
举个例子:
小写金额:1,606.53
获得结果:零 壹 陆 零 陆 伍 叁.
因为是套打,要考虑到是分别取得金额数的位置和返回大写的对应关系.
...全文
147 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelpMeNow 2003-05-21
  • 打赏
  • 举报
回复
高手啊,不愧是四粒星.给分,哈哈,以后多多请教
netcha 2003-05-21
  • 打赏
  • 举报
回复
多打几位,打N个空格就行了嘛
mrfanghansheng 2003-05-21
  • 打赏
  • 举报
回复
好办法!收藏§!
王集鹄 2003-05-21
  • 打赏
  • 举报
回复
function MoneyMask(mMoney: Real; mSpace: string = ''): string; overload;
const
cMoneyChar: WideString = '零壹贰叁肆伍陆柒捌玖';
var
I: Integer;
begin
Result := FormatFloat('00000.00', mMoney);
for I := 0 to 9 do
Result :=
StringReplace(Result, IntToStr(I), cMoneyChar[I + 1] + mSpace, [rfReplaceAll]);
Result := StringReplace(Result, '.', '', [rfReplaceAll]);
end;

function MoneyMask(mMoney: string; mSpace: string = ''): string; overload;
begin
mMoney := StringReplace(mMoney, ',', '', [rfReplaceAll]);
Result := MoneyMask(StrToFloatDef(mMoney, 0), mSpace);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := MoneyMask('1606.53', ' ');
end;
clb2001 2003-05-21
  • 打赏
  • 举报
回复
Function ChineseMoney(value:double):String;
var
SmallMoney,BigMoney:string;

wei1,qianwei1:string[2];
qianwei,dianweizhi,qian,number:Integer;
neg :Boolean;

begin
qianwei := -2 ;//小数点后的位置,这里为2位
neg := False;
SmallMoney := FormatFloat('0.00',value);
number := Length(SmallMoney);
if copy(trim(SmallMoney),1,1) ='-' then
begin
neg := True;
number := number -1;
SmallMoney := Copy(SmallMoney,2,number);
end;

dianweizhi := pos('.',SmallMoney);

for qian:= Length(SmallMoney) downto 1 do //循环小写金额的每一位,从右到左
begin
if qian<>dianweizhi then //如果读到的不是小数点就继续
begin
case StrToInt(Copy(SmallMoney,qian,1)) of
1:wei1 := '壹';
2:wei1 := '贰';
3:wei1 := '叁';
4:wei1 := '肆';
5:wei1 := '伍';
6:wei1 := '陆';
7:wei1 := '柒';
8:wei1 := '捌';
9:wei1 := '玖';
0:wei1 := '零';
end;
case qianwei of //判断大写位置
-3:qianwei1 :='厘';
-2:qianwei1 :='分';
-1:qianwei1 :='角';
0:qianwei1 :='元';
1,5,9:qianwei1 :='拾';
2,6,10:qianwei1 :='佰';
3,7,11:qianwei1 :='千';
4:qianwei1 :='万';
8:qianwei1 :='亿';
end;
inc (qianwei);
BigMoney := wei1+qianwei1+BigMoney; //组合成大写金额
end;
end;
if neg then Result := '负'+BigMoney
else Result := BigMoney;
end;
直接调用即可

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧