找回旧帖:谢谢斩月,谢谢monkeycz,谢谢dtcser,谢谢超级大BUG

一个偶然的时间,我无意中发现,我(liigo)于2008年10月份发表于CSDN博客上的一篇小文,《谢谢斩月,谢谢monkeycz,谢谢dtcser、超级大BUG》,已经无缘无故的消失了。现在我只能通过百度快照才能证实它曾经存在过:

 

 

百度快照地址:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c422461f1c3db6e63a734342849021274ab24a5cecfb3078200357e4da8ac25e98e6d27e209f5136676cf65664d10edfbb5125b037e65afed91cf0bb8025e5afc5a4ab4325c944737c97f0fa4d7613dd1ff40347e5b1e848025f61e5b06c3ca8122661&p=8f71c54ad18516fc57e8cf3816&user=baidu

(快照显示此文发表/最后编辑于2008年10月02日19:09:00,前面的图片似乎被tu.6.cn处理过显示不完整。)

 

快照中的文章链接地址(http://blog.csdn.net/liigo/archive/2008/10/02/3009840.aspx)已然无法打开,CSDN博客系统提示“在你访问时发生了错误:文章无法获取。”。

 

其实发现文章消失是数月前的事了,我一直没有处理。前几天再次想起此事,于是在CSDN博客专家群中咨询官方人员,得到的答复是,由于时间过去太久,文章无法还原,建议我自行通过搜索引擎的缓存页面恢复文章内容。可是我遍查各大搜索引擎,似乎只有百度缓存过标题和摘要,没见有搜索引擎缓存该文全文内容。印象中有论坛部分引用过文中的某段文字,一时之间也难以找到。

 

也许是运气比较好吧,我在自己私人电脑里翻出了当时备份的文字和图片,此文因此得以重见天日,庆幸中。

 

以下是原文:

 

 

 

 

谢谢斩月,谢谢monkeycz,谢谢dtcser,谢谢超级大BUG。

 

斩月计划(http://ZanMoon.monkeycz.com),分离核心支持库,打造小于10k的易程序。

 

monkeycz,斩月计划的创始人、作者。

 

dtcser、超级大BUG,斩月类库(ZCL)的主要开发者(之一)。

 

斩月计划已经有一两年没有更新了,有易友(dtcser,licengxin)在现有版本基础上进行过二进制修改,一并感谢。

 

“斩月计划”是一个很好的、很有创意和实用价值的项目,它有效解决了易语言程序必须依赖核心库、程序尺寸偏大的问题,满足了一部人对这方面的需求,在一定程度上拓展了易语言的应用范围。

 

斩月计划大名鼎鼎,我早就听说过了,但一直没有深入了解,主要是个人原因:因为我始终认为,易语言程序依赖易语言核心库天经地义,通过分离核心库来减小EXE/DLL文件尺寸,并以“损失大批唾手可得的实用功能”和“增加程序编写复杂性”为代价,似乎得不偿失。我个人编写易语言的程序,并不介意它的文件尺寸,也不介意多使用几个支持库,我介意的是,能不能更快更好的完成这个程序,——其实这才应该是易语言存在的本质啊,千方百计的要少用一个支持库,千方百计的用API取代支持库,不是在为自己增加负担么?很多易友对支持库有偏见,但是我没有。

 

但是到了我开发“易写易库(EXEK)”时,我突然发现,在某些特殊情况下,“斩月”真的是非常有用非常实用。以易写易库为例,如果不支持斩月,用它开发出的易语言支持库就不能被易语言3.0使用(用“易写易库(EXEK)”为易语言3.0开发支持库?)。

 

要让你的易语言程序支持斩月,你只能选择:1、使用Windows系统API;2、使用内嵌汇编(置入代码);3、使用核心库中有限的几个命令;4、使用支持斩月(即满足前三个条件)的易语言模块。即,大部分情况下,你不能使用任何易语言支持库(包括核心库)中的功能,当然有少数例外(如特殊功能支持库中的“置入代码”,另注,该命令已在易4.12中移入核心库)。支持斩月,往往意味着你需要放弃许多现成的实用的功能丰富的支持库,无疑会增加程序的开发难度;有得就有失,选择权在使用者。

 

其实,斩月计划也是依附于易语言编译器的辅助工具,它无法脱离易语言编译器而独立存在(除非把它自身改造成另一个易语言编译器,而这在短期内是不现实的),它所支持的核心库中的命令,多数都是因为这些命令已经事先被易编译器将实现代码编译进EXE/DLL中了,——当然,不被易编译器支持而被斩月支持的命令也有,如“指针到文本”“指针到字节集”和位操作相关的大部分命令,这是斩月内部特殊处理的结果。

 

我还是坚持我的观点:在特定情况下,斩月非常有实用价值。

 

“易写易库(EXEK)”正式支持斩月,这就是我(liigo)以实际行动对“斩月计划”的支持。

 

 

另,我在实践中发现超级大BUG的易模块“ZCL_核库函数1.01”(更新日期2007年6月27日,模块内部注明版本为1.1)中没有“文本到数值”功能,因此贴出以下易语言源代码,也算是对斩月的一点支持:

 

 

完整易语言源代码文本如下(可直接复制粘贴到易语言IDE):

 

.版本 2 .程序集 仿核心库程序集, , , 是对“ZCL_核库函数1.01”的补充,by liigo, 20080926 .子程序 _文本到整数, 整数型 .参数 文本, 文本型 返回 (_文本到长整数 (文本)) .子程序 _文本到长整数, 长整数型 .参数 文本, 文本型, , 将忽略其中所有非数字字符 .局部变量 i, 整数型 .局部变量 num, 整数型 .局部变量 结果, 长整数型 .计次循环首 (文本_取长度 (文本), i) num = _取代码 (文本, i) - 48 .如果真 (num < 0 或 num > 9) ' 不是数字(0-9) 到循环尾 () .如果真结束 结果 = 选择 (结果 = 0, num, 结果 × 10 + num) .计次循环尾 () 返回 (结果) .子程序 _文本到数值, 双精度小数型 .参数 文本, 文本型 .局部变量 dotIndex, 整数型 .局部变量 整数结果, 长整数型 .局部变量 小数结果, 双精度小数型 .局部变量 小数部分文本, 文本型 .局部变量 i, 整数型 dotIndex = 文本_寻找 (文本, “.”) .如果真 (dotIndex = -1) 返回 (_文本到长整数 (文本)) .如果真结束 .如果真 (文本_寻找 (文本, “.”, dotIndex + 1) ≠ -1) 返回 (0) ' 出现两个小数点,明显不合法。 .如果真结束 整数结果 = _文本到长整数 (文本_取左边 (文本, dotIndex - 1)) 小数部分文本 = 文本_取右边 (文本, 文本_取长度 (文本) - dotIndex) 小数结果 = _文本到长整数 (小数部分文本) .计次循环首 (文本_取长度 (小数部分文本), i) 小数结果 = 小数结果 ÷ 10 .计次循环尾 () 返回 (整数结果 + 小数结果) .子程序 _取代码, 整数型 .参数 文本, 文本型 .参数 字符位置, 整数型, 可空, 1为首位置,2为第2个位置,如此类推 .如果真 (是否为空 (字符位置)) 字符位置 = 1 .如果真结束 返回 (读指定地址处字节 (取文本变量数据地址 (文本) + 字符位置 - 1)) 

 

你可能感兴趣的:(搜索引擎,api,汇编,百度,语言,编译器)