这段程序把我搞得乱七八糟的.

w78z 2003-10-19 12:04:02
功能是把几个数字换成大写的人民币汉字.
但偶就是模模糊糊的...
哥哥们能帮忙多加些注释吗?
~~~~~~~~~~~`
function SmallToBig(Small:Real):string; //觉得用double好啊。。靠!
Var Str:String;
DotPos:Integer;
i:Integer;
bStart:Boolean;
sResult:WideString;
SmallDit:Double;
begin
Result:='零圆整';
SmallDit:=Round((Small-INT(Small))*100)/100;
Small:=INT(Small)+SmallDit;
if SmallDit<0.01 then
Exit;
Str:=FormatFloat('#.##',Small);
DotPos:=Pos('.',Str);
if DotPos=0 then
DotPos:=length(Str)+1;
bStart:=False;
For i:=DotPos-1 downto 1 do
begin
if (Str[i]<>'0') and (not bStart) then
bStart:=True;
if ABS(i-DotPos) MOD 4=1 then
begin
if (Str[i]='0') and (DotPos-i<>1) then
sResult:='零'+sResult;
Case DotPos-i of
1:sResult:='圆'+sResult;
5:sResult:='万'+sResult;
9:sResult:='亿'+sResult;
13:sResult:='兆'+sResult;
end;
bStart:=False;
end;
if (Str[i]<>'0') then
begin
Case ABS(i-DotPos) MOD 4 of
0:sResult:='仟'+sResult;
2:sResult:='拾'+sResult;
3:sResult:='佰'+sResult;
end;
end;
if i=3 then
Application.ProcessMessages;
Case Str[i] of
'0':if bStart and (sResult[1]<>'零') then
begin
sResult:='零'+sResult;
bStart:=False;
end;
'1':sResult:='壹'+sResult;
'2':sResult:='贰'+sResult;
'3':sResult:='叁'+sResult;
'4':sResult:='肆'+sResult;
'5':sResult:='伍'+sResult;
'6':sResult:='陆'+sResult;
'7':sResult:='柒'+sResult;
'8':sResult:='捌'+sResult;
'9':sResult:='玖'+sResult;
end;
if Str[i]<>'0' then
bStart:=True;
end;
Delete(Str,1,DotPos);
if Length(Str)>0 then
begin
Case Str[1] of
'0':if sResult<>'' then
sResult:=sResult+'零';
'1':sResult:=sResult+'壹';
'2':sResult:=sResult+'贰';
'3':sResult:=sResult+'叁';
'4':sResult:=sResult+'肆';
'5':sResult:=sResult+'伍';
'6':sResult:=sResult+'陆';
'7':sResult:=sResult+'柒';
'8':sResult:=sResult+'捌';
'9':sResult:=sResult+'玖';
end;
if Str[1]<>'0' then
sResult:=sResult+'角';
if Length(Str)>1 then
begin
Case Str[2] of
'1':sResult:=sResult+'壹';
'2':sResult:=sResult+'贰';
'3':sResult:=sResult+'叁';
'4':sResult:=sResult+'肆';
'5':sResult:=sResult+'伍';
'6':sResult:=sResult+'陆';
'7':sResult:=sResult+'柒';
'8':sResult:=sResult+'捌';
'9':sResult:=sResult+'玖';
end;
if Str[2]<>'0' then
sResult:=sResult+'分';
end else
sResult:=sResult+'整';
end else
sResult:=sResult+'整';
Result:=sResult;
end;
~~~~~~~~~~~~
谢谢了。......
...全文
49 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,392

社区成员

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

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