金额转成大写
var
Cdigs: array[0..9] of string = ('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
Cdsets: array[1..18] of string = ('万','仟','佰','拾','亿', '仟','佰','拾','万','仟','佰','拾','圆','','角','分','厘','毫');
function THandySystem.GetCapitalWord(const aWord: real; aIsMoney: boolean): string;
var
DStr, outStr, tmpstr: string;
dsize, i: integer;
CanZ: boolean;
begin
if aIsMoney then
begin
Cdsets[13] := '圆';
Cdsets[15] := '角';
Cdsets[16] := '分';
Cdsets[17] := '厘';
Cdsets[18] := '毫';
end
else
begin
Cdsets[13] := '';
Cdsets[15] := '';
Cdsets[16] := '';
Cdsets[17] := '';
Cdsets[18] := '';
end;
CanZ := False;
Dstr := FormatFloat('0.0000', aWord);
dsize := Length(Dstr);
outStr := '';
for i := dsize Downto 1 do
begin
if Dstr[i]='0' then
begin
if Canz then
begin
if Dstr[i + 1] <> '.' then
begin
CanZ := False;
tmpstr := '零'
end
else
begin
CanZ := true;
tmpstr := ''
end;
end
else
tmpstr := '';
if (CdSets[18-(Dsize-i)]=Cdsets[13]) or (CdSets[18-(Dsize-i)]='万') or (CdSets[18-(Dsize-i)]='亿') then
tmpstr := CdSets[18-(Dsize-i)]+tmpstr;
end
else if Dstr[i]='.' then
begin
begin
if (aIsMoney = false) and (Copy(dstr,dsize-3,4) <> '0000') then
tmpstr := '点'
else
tmpStr := '';
end
end
else if Dstr[i]='-' then
TmpStr := '负'
else
begin
tmpStr := Cdigs[StrToInt(Dstr[i])] + CdSets[18-(Dsize-i)];
if Not CanZ then
CanZ := true;
end;
OutStr := TmpStr+OutStr;
end;
if Copy(dstr, dsize - 2, 3) = '000' then
if aIsMoney then
OutStr := OutStr+ '整';
Result := OutStr;
end;