2025年已过去 14.27%
我太强大了    @ 2008-08-25, 07:57

始于上周四晚上,一个刚购买了Audio CD Burner的丹麦客户因为刻录出了问题,而给他退了单。发现是04年我们购买的刻录组件(MACDB)的bug,对于时间稍长的音轨刻录就会出问题。

当天晚上以及其后的连续几天晚上都通宵,设法解决该问题。由于该组件我们购买的是不含源码的版本,而现在卖家已经零维护了(联系都联系不上了),网上又找不到盗版破解版源码版,几乎束手无策。然后决定改用03年购买的同一个卖家的另外一套刻录组件(CueBurner),却在更改完成之后的测试中发现在vista系统下刻录的稳定性比之前用的控件相差很远……

昨天下午睡觉做梦中,满脑子都是改这个东西的代码……

后来想想,还是放弃了CueBurner方案,集中精力再在MACDB上想想办法。昨晚,在奥运闭幕式时,我去大便了。而在大便时,突然想明白了MACDB出错的原因:是因为65535!也就是当一个音频文件的帧数大于65535时,传进去组件后,居然就如同将一个32位整数赋值给一个16位整数那样,被“截断”了。

当然,想明白这一层,至此意义还不大。于是想能不能反编译组件代码看看是哪个变量弄错了类型。下载了Dcu2Pas工具,将MACDB组件反编译成pas文件(这些pas是无法被编译的)。当然,凭借我这点汇编基础要想看懂反编译出来的代码,几乎是不可能的。也因此几乎放弃了这一途径。

半夜,床上躺了一个小时却睡不着,于是起床继续看反编译出来的那些pas文件,以及做一些无用的尝试。这些pas文件虽然无法被编译,执行代码也几乎看不懂,却带来一个好处:我能看到所有类的声明,包括私有成员。

在半夜两点多的某一刻,灵感来了!

能了解到所有类的定义,很重要!
当然,之前所领悟的65535也突然变得有意义起来!

其实,在将音频文件传入组件后,它的长度必定是存在某个变量(成员)里,虽然我不明白为什么会被“截断”,但是我可以找到这个成员所在位置,即使它是私有的,我也可以通过指针直接访问其内存对它进行修改!找到后,我只要在其基础上,再加上65535的n倍(n为“真实长度”整除“被截断后的值”)即可。

先取得组件本身的指针,然后通过偏移找到其某一个私有成员的地址,再……

抑制住内心的激动,和忐忑(因为尚未验证确实可行),修改了实验性的代码,测试!成功了!哇咔咔咔咔,我太强大了!

可惜半夜里,找不到人分享喜悦,只好叫醒老婆 :lol: ,当然,老婆得知后也很高兴。毕竟,困扰了4天的一个问题,几乎快要放弃的一个难题。

呵呵,解决方法当然并不算高深,但是,经过那么多曲折才找到的,即使是间草屋,也是柳暗花明啊!

农码生涯 | 1 个评论 | 3,914 次阅读
简短地址:http://ncblog.net/416/
电视机修好了    @ 2008-08-13, 23:42

8月8日的前两天,突然电视机坏了,显像只有一条竖直的亮线。由于平时一直不看电视,也就没理。后来想起8号晚上有开幕式,但直到8号下午才找到人来修。修了一下午,修电视的人说没有电路图,等找到电路图再修……结果就是连奥运开幕式也没看到(当天晚上在线播放卡的要命,没法看,后来bt下载了nbc的版本看了,据说nbc的版本比cctv的要好,不过我是无从比较了)。一直拖到昨天(12号)。昨天下午那人终于在没有电路图的情况下修好了电视,也终于,能看到比赛了。

软硬兼施 | 2 个评论 | 11,759 次阅读
简短地址:http://ncblog.net/415/
Delphi 2009 & Lazarus    @ 2008-08-07, 04:31

从李维的博客得知在Delphi找到新东家之后,很快要出新版了,而且是“這次的Tiburon應該算是CodeGear對於Delphi Win32以及C++Builder Win32從Delphi 7/C++Builder 5以來最大幅度的進步”。

对我来说,比较感兴趣的,是编译器和VCL组件库的改进,外围的工具兴趣不大。

据说,新版本的编译器要支持泛型和匿名方法(Anonymous Method),有点意思,这会让Delphi看起来越来越“现代” :lol: 。另外,VCL说是要全面支持unicode了,这一点被广大Delphier期待了多年,现在终于要来了。不过,其实TNT已经做得不错了。

具体东西如何,还是等正式发布了再看吧,希望真的如李维所说,品质要稳定才好。

记得曾经Borland想打造跨平台的CLX组件库。不过,随着kylix的失败,CLX也消失了。而在开源社区,却有一个跨平台的兼容Object Pascal语言的编译器——Free Pascal以及一个越来越可用的IDE——Lazarus(和他的组件库LCL)。

Lazarus 0.9.24自带了Free Pascal 2.2编译器,可以运行在Windows,Linux,Mac OS X等平台上。可以用来开发这些平台上(包括WinCE)的应用程序。习惯VCL的开发者,应该能很快适应它的LCL,因为他们相似度是如此的高。

查看大图

软硬兼施 | 评论已关闭 | 13,766 次阅读
简短地址:http://ncblog.net/414/
又是关于韩国人的谣言    @ 2008-08-02, 02:32

前几天转帖了老僧的旧文,是关于互联网谣言的辟谣的。

而最近又有关于韩国人的谣言,内容是:

“据韩国《朝鲜日报》报道,韩国成均馆大学历史系教授朴芬庆发表了一片论文,其内容包括中国伟大革命先驱——孙中山有韩国血统。”

下面是《朝鲜日报》的辟谣文章,原文见:http://chinese.chosun.com/site/data/html_dir/2008/08/01/20080801000034.html,同时,文中也提到了去年以来关于韩国人言论的多则谣言:

最近,中国的部分媒体转载假新闻,引起了不少的非议。中国广东省的《新快报》于上月31日在社会版头条刊登了一则新闻称:“据韩国《朝鲜日报》报道,韩国成均馆大学历史系教授朴芬庆发表了一片论文,其内容包括中国伟大革命先驱——孙中山有韩国血统。”1日,中国和香港的各家网络媒体转载该新闻报道后,中国网民对此表示强烈谴责。

但经确认,《朝鲜日报》从未报道过这一内容,此外,成均馆大学的历史系教授中没有“朴芬庆”其人,而且也没有人发表过上述内容的论文。

据悉,《新快报》的(上述报道署名是)河振涛,杜克两名记者。但《新快报》方面辨称:“本报社里没有这两人,新闻只是转载自网上的文章。”

《新快报》去年通过题为《韩中文化战争》的特别报道,报道了首尔大学历史系教授朴正洙(音)建议把汉字申请为世界文化遗产一事。但经确认,首尔大学历史系和东方史学系根本没有叫朴正洙的教授,内容也纯属虚假。

香港《文汇报》方面表明立场说:“我们毫无怀疑援引了上海东方网的内容进行了报道。因为东方网是中国新闻媒体中可信度极高的新闻来源,所以就直接援引了该报道。我们也觉得很荒唐。”

《文汇报》方面就“是否对事实进行确认?”一问回答说:“因为从未有过此类事,所以就没确认,只是觉得东方网上的报道很有趣,就节选援引了。”

此外,上述报道在搜狐网站等中国主要门户网站上登载后,相关报道后面指责韩国和韩国人的贴文多达数千条。

另外,中国网上甚至出现了“韩国人主张越国美女西施和毛泽东等也是韩国人”这样毫无根据的说法,使反韩情绪更加高涨。

胡言乱语 | 评论已关闭 | 8,957 次阅读
简短地址:http://ncblog.net/413/