积累日常生活的点滴,开发过程的心得。

C和Delphi枚举类型定义的转换

这两天转换C语言的头文件时发现一个问题。Delphi的枚举类型和C是不完全等价的。C的枚举类型的size总是4个字节,而Delphi的枚举类型的size跟最大枚举值有关,如果最大枚举值小于255,枚举的size只有1。所以移植C程序的时候,要在Delphi的枚举定义后加上一个值为$FFFFF的枚举项目,这样才能保证Delphi枚举定义的Size是4。

Port SQLite Developer To Delphi 2009

Bug列表

1.增加SQL Monitor 的Group功能

2.Drop Field of Table has strange result.

3. Implement Open DB Readonly

4. Sometimes hangup when running under debug mode.

5.哈巴狗?字段的数据?入界面的Grid的???示有??【哈巴狗・】
 

6. complete qualified name .

7. DBRichEdit does not set dataset into edit mode when use ime to change the text content.

8. Implement alternate row color for devexpress grid (can not be fixed)

9.Delete data using Hex Editor will raise AV.

10. Implement julian datetime

 

Delphi2009安装印象

下了一个3168的版本,虽然还是测试版,但是感觉很不错,速度很快,已经达到了RTM的水准。刚刚看了一下别人的用后体验,发现除了泛型外,还增加了指针加减法,这样就可以很方便的移植C,C++的程序了。写惯了C,不能用指针加减法,感觉特别不方便

编译ffmpeg

ffmpeg的编译,主要是参考了http://soenkerohde.com/tutorials/ffmpeg/上面的编译指南。

有几点要注意的是,上面的教程写得时间比较早,对于最新版的ffmpeg不太适用

1.在Vista好像编译有问题,老是报告权限不够,我只好换到xp上编译。

2.用MSYS1.0.10已经无法编译了,必须更新到1.0.11(包括CoreUtils和Make3.81,bash shell)

3.MP3的编译要使用

./configure --enable-memalign-hack --enable-libmp3lame --extra-cflags=-I/local/include --extra-ldflags=-L/local/lib

旧的编译使用--enable-mp3lame,反正编译不过的时候看一下.configure --help就行了。

4.要输出DLL文件,可以使用--enable-shared编译选项

在线文件转换网站(转贴)

1、通用类:

zamzar 是一个很牛的在线转换工具,能转换100M以下的到40种格式的文件,包括图象格式、文档格式、音频格式、视频格式等,几乎囊括了我们熟知的所有文件格式,可以自由转换,功能相当不错的了,可以说是一个比较全能的工具了,而且页面简洁易用,速度也很不错!!(via

Paypal支付需要注意货币转换

Dear **********,

This is Michelle, and I am happy to assist you with your question
regarding your PayPal account.

Upon your email, I understand you want to know the currency conversion
of your credit card.

PayPal provided a new feature to our users. That is when you make a
payment, the system will charge local currency and convert it in PayPal.
This will help to decrease the double conversion in the bank. In this
account, your credit card currency is CNY. So when you send the payment

英文SEO论坛和博客推荐(转贴)

英文SEO论坛和博客推荐

SEO中的noindex,nofollow

使用如Drupal的CMS来建站的一个问题就是生成的网页经常是不符合Google的高质量网页的标准的。比如Image就会生成很多雷同的网页,Google会认为是Spam。

我们通常可以在robots文件中指定要屏蔽的网页来禁止搜索引擎索引这类雷同的网页,还有一种方法是在网页的Meta tag中指定robots 的内容为noindex,nofollow。

具体到Drupal,可以使用Nodewords和Nodewords_nodetype模块来限定,不过nodetype模块需要修改一下,因为它只对应了Description和Keywords这两个Meta Tags,而没有对应Robots

如何为你的程序添加多语支持

有很多商业的程序可以用来添加多语支持,不过我觉得GNU GetText For Delphi比较简单好用。

下载一个GNU GetText For Delphi,安装后运行它的命令行工具dxgettext来提取用于翻译的字符串。

dxgettext -b c:\source\myprogram --delphi -r

上面命令执行后,会在myprogram目录下生成一个default.po文件。

然后执行msgmkignore来提取不需要翻译的字符串

msgmkignore default.po -o ignore.po

最后使用msgremove从翻译模板文件中删除不需要翻译的字符串。

msgremove default.po -i ignore.po -o output.po

之后,可以用免费的poEdit来翻译生成的output.po文件。

 

翻译完之后,执行msgfmt output.po -o default.mo将po文件编译为MO文件。

 

VC2005 程序的部署问题

上周发布的SQLite Developer2.90,2.91有用户报告无法加载sqlite3.dll。2.90版的sqlite3.dll为了追加ICU的支持,是用VC2005重新编译的,我一开始估计是依赖的DLL不存在,用Dependency walker看了一下,发现VC2005编译后的DLL引入了对MSVCR80.dll的依赖,于是将这个DLL发给了用户,结果还是报告同样的错误。很是困惑不解,于是上google上搜索了一下,才知道从VC2003开始微软为了解决DLL 版本不一致的问题,引入了基于manifest的版本管理,也就是所谓的side by side assembly的依赖管理方式。这就使得DLL和程序的分发部署变得非常复杂,简单的在程序所在目录放置相关的DLL已经不行了。安装程序必须导入一个MSI的安装包。可是我只用了一个DLL,就需要分发额外的MSI安装程序,特别是我的安装程序是用Innosetup写的,导入MSI很麻烦。搜索了半天google,终于发现只要暴力编辑一下编译后的DLL的Manifest资源信息,去掉对于版本的指定就可以了。微软为了解决一个麻烦的问题,导入了一个更加麻烦的问题,真是shit。

 

参考了下面这篇文章

同步内容