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

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;
~~~~~~~~~~~~
谢谢了。......
...全文
47 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
一.脱壳机名字的由来 skylly's CoolDumpper,借用了看雪论坛里高人某个让人流口水的工具的名字 界面也是盗版的CoolDumpper,不过本人盗版技术不高,做成了个四不像~~ 二.脱壳机的原理 由以下几大要部分组成, 1.侦壳功能. 完全拷贝自看雪论坛“任平生”的代码 2.Dummpper(进程转存) 初期,完全拷贝自lenus的lenus's Dummper代码, 现在为了适应脱壳的需要,发现原来的代码对非标准格式的PE文件的处理有些小问题, 所以代码基本都重写过了,但是基本处理步骤还是一致的,外表上看不出来 3.cooldebugger plugin(调试插件) 完全自主开发的插件,说是调试器其实没有用调试,而是注入,然后进行一些最简单的内存操作,没有 什么技术含量,可以完美躲过调试器检测的壳,对于内存检验比较强的壳可能不是很好用。 4.真正意义上的调试器 用最简单的调试API做的一个具有基本功能的调试器,目前还不能用于脱壳,只是一个玩具,为了将来扩展用的。 但是hook api始终不是很妥当,总会让壳有机可乘,以后可能会考虑加入驱动,驱动最让我不放心的是它的稳定性。 三,关于源码 由于还在开发中,暂不开源(主要是怕被人拿去篡改,反而让人以为他是正宗,我是盗版) 等到我不再开发时,会开放全部源代码,技术这东西,共享才是王道。 四。使用说明。 我想不用说太多了吧,选择目标文件后(支持拖放),再选择对应的插件,再点击脱壳按钮就可以了。可以说是接近傻瓜化了... 几个子功能说明: 详细日志:是调试器用的 PE标准化:是对某些被改得乱七八糟的壳(如upack)进行简单的PE修复 移除自校验:这个功能可以说是没有设计好,不同的壳自检验的地方不一样, 所以处理也应该不一样,可按照现有的工作模式又不可能把它做到plugin(插件)里面去, 但是,总之我会加进去的。 第x次调用API中断:这个功能是从CoolDumpper那儿抄袭界面遗留下来的,光有界面,未实现功能,将来如果有自动脱壳不定 的壳时,可能可以把这个地方扩展成手动脱壳。 OEP输入框和IAT输入框:功能已经弱化,由脱壳插件自动完成。 纠正映象大小:功能已经弱化,已经由dumpper自动完成。 五。关于private版本. 由于种种原因,不再发布public版本,仅作为私下交流之用。 所谓私下交流,可以算一种"精华"门槛吧. 1.看雪论坛或者一蓑烟雨,30精以上的朋友(高手)或者500帖以上的朋友(超级水牛),或者30贴以内且精华率在1/3以上的(超级高手)随时可以向我索要最新版。不过我相信高手们只会把我这个东西当玩具玩玩而已。 2.在使用这个脱壳机过程中遇到比较严重的问题或者不能脱的壳,可以来E-mail和我交流,欢迎技术交流,谢绝任何形式的脱壳请求, 因为我只是个菜鸟。对于有价值的来信,我会酌情回复最新版脱壳机。 得到这个脱壳机的人,任由其处置。 六。开发目标 开发常见压缩壳和加密壳的插件并实现自动脱壳。 压缩壳插件做十个左右,加密壳插件做二十个左右。 压缩壳插件: upx, upack, aspack, nspack, mew, hmimys, pecompact, expressor, fsg, kbys, packman, PEncrypt (已经基本完成。) 加密壳插件:(还没想好,暂定, 刚刚开始开发) pe-armor, armadillo, aspr, acpr, telcok, execrypt, pelock, pc-guard, morphine, safedisc, themida, enigma, obsidium, starforce, yoda_s_cryptor, epe, pespin, svkp, sdp.............. 预估主程序最终版本版本号:2.0 预估所有插件最终版本号:0.3 已知bug: 1.由于修复输入表是用的ImpRec.dll这个动态链接库,我没有源码,它在处理某些IAT不连续的程序时,获取的IAT的大小有问题,所以暂时还没 有解决方案来对付,等我复习好输入表结构,以后脱壳机就自己来重建输入表了,呵呵。 2.无法对付多层壳. 3.处理自校验有问题,请不要随便选中,否则后果自负 现在发布的这个版本仅仅代表了一个脱壳机的起步阶段,当玩具吧。

5,388

社区成员

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

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