2006-09-30

记录一下关于绘画方面的规划

都封装好了,懒得再合并到一堆,干脆各负责各的,这样效率也更高(虽然麻烦点):

1. 重新设计了个全新的CCanvas类,这个类主要用于双缓冲绘画(如果只是需要使用内存位图/内存画刷等简单资源,其它都自行处理的话,没必要使用如TCanvas那么包罗万象的类,虽然delphi的TCanvas写的很好,不过用它就代表资源的浪费/效率的损失。),解决闪烁问题。
2. 专门设计了个TPicture类,该类用于直接加载图片文件/流数据绘画。

其它:两者如果有需要交互的话也可以互相使用,并不影响其它。现在生成的程序已经150多K了,Pack测试看看发现还有80多K,汗~当然,发表的时候就不Pack了,免得看到这么小的程序孩以为是病毒。。。
另:刚备份了一下源代码,一不小心才发现,居然都写了1000多个文件了。。。难怪我管理的时候转来转去觉得比较头晕呢。。。还好使用了Delphi2006,比较便于源文件管理,如果还是Delphi7我实在不敢想象!

2006-09-25

正式转到Beta版使用 - Blogspot

Beta版得Template也可以直接修改HTML了,而且关于它得Template得A2功能Classes版已经不再提供,必须升级。
目前Blog改动:
1. 字体统一为 宋体 12px
2. 增设 Recent Comments 得 Feed (升级后Blog的Answer给出的HTML增加修改模板功能已经不能使用,Beta版如何添加又没告知,所以暂时这样,反正效果都一样)
3. The End.

Google Blog Template Walkthrough

Answer地址:Template Walkthrough
自定义性非常强,不过好像只有Classes版本可以用,我升级到Beta用很多标签都会被禁止,有点郁闷。

2006-09-18

wsprintf和wvsprintf的区别

最近写点东西,由于不想使用Delphi自带的Format函数(该函数会增加程序负担),所以采用标准API方式格式化字符串,但Delphi的Windows单元有很多问题,wsprintf就是其中有问题的一个。

不晓得Delphi怎么搞的,wsprintf的参数都不给全,Windows定义的为:
int wsprintf(
LPTSTR lpOut, // 输出缓冲区地址
LPCTSTR lpFmt, // 格式化串地址
... // 变量列表

Delphi居然直接把变量列表省略了。汗 - -!
如果只有一个变量需要转换都必须使用wvsprintf,而wvsprintf本来就是wsprintf的升级版,何必多次一举呢?

所以我重新定义了一下:
function winsprintf(Output: PChar; Format: PChar; Data: PChar): Integer; stdcall;
external user32 name 'wsprintfA';

这样就没问题了,另外关于标题的答案为:
前者为单一变量使用,后者为多变量使用,传递的是该引用地址的指针而已。

That's all

2006-09-17

unresolved external symbol _Atl{错误}@【ATL】

对VC非常不熟悉,包含各种各样头文件,连使用哪个都不知道,汗的不得了,今天就遇到一个问题。

为了一个Delphi的项目,想偷懒用VC的ATL来创建DLL调用,用ATL COM AppWizard新建了个DLL工程,使用MinDependency模式编译,结果出现如标题所示错误,百思不得其解,结果Google了一下,才知道少了两头文件:

#include <atlcom.h>
#include <atlhost.h>

还有个_main错误处理方法也很简单:屏蔽StdAfx.cpp中的#include <atlimpl.cpp>就可以了。

另外:VC也挺方便的,如果用 ATL 的话,CComBSTR, CComPtr等都会自动释放,开始还提心挑担的使用IStream*接口,再Release,这下了解了就方便了,嘿嘿!

本来是用D7+自己编译的system,现换D2006

主要是太麻烦了,太累,而且我只作SDK级开发,D7代码编辑器也没D2006好用!

FastMM随时都在升级,用D7的话就每次都要自己把原system.pas的内存操作该为基于FastMM的,再Dcc32一下,再替换D7的dcu,每次都累的半死,还担心会有错。吃力不讨好!

而且D7的一些内置操作真的很讨厌,比如 function Pos(),大爷的,我就没看到哪儿有这函数的过程,应该是编译器内置的(没深入考证),想做Unicode处理就只有改名使用,比如重新声明为 PosA() PosW(),kao!太不利于移植了!

刚好想到D2006已经在使用FastMM了,干脆就用它了!
什么升级打补丁的,就麻烦Borland代劳了,虽然目前发现D2006如果加载ActiveX unit会跟着加载SysUtils,我写的程序需要用的接口声明很少,就懒的去深究了,自己声明了就是,我还是专心做项目吧。

Say goodbye to Delphi7.

不得不用Delphi2006

为了安心,做了个小测试,比较Delphi7和Delphi2006的内存操作效率。

想法:循环做一亿次申请内存块,移动内存数据,销毁内存块,比较两者时间差距。

代码:
var
s: String;
p: PChar;
i: integer;
Start: Cardinal;
begin
Start := GetTickCount;
s := '123';
for i := 0 to 100000000 do
begin
GetMem(p, 256);
Move(Pointer(s)^, p^, Length(s));
FreeMem(p);
end;
Memo1.Lines.Add(IntToStr(GetTickCount - Start));
end;

结果:
Delphi7 用时:19000 (19秒)
Delphi2006 用时:7063 (大约7秒)

两者相差接近3倍。汗一个!

2006-09-03

红色风暴"爆"无知,孟广美你太不该

昨晚在家看了中天综合台的红色风暴,主题是两岸演艺界大不同,作为对内地知之甚少的主持人利菁和其他嘉宾,在这里我就不想多说了,无知嘛,权当小朋友犯错,可以原谅.

而孟广美也是嘉宾之一,作为经常往来内地工作的艺人,你真的是太不应该了,完全是在跟风,在哗众取宠,在贬低内地和内地人,在内地,有人不认识你是正常的,还居然拿小朋友让你签名来说事,来讥讽人,殊不知却把自己给贬低了.你当然不比刘德华了,何况在内地你也不过是一个二三流的明星罢了.

更可气的是,说起去西部边远地区拍戏的经历,说是要大小便,只能挖一个洞解决,极尽嘲讽之能事,美国英国这些发达国家难道就没有贫穷的地方和贫穷的人吗?贫穷难道是一种罪过吗?谁不希望过上好日子!马桶对于特别贫困的地区的人来说,,的确是一件奢侈品.多少热衷慈善的名人慷慨解囊,为什么就独独你孟广美只有冷嘲热讽?你的爱心到底在哪里?能不能就请阁下捐个马桶呢?

说到南京大屠杀,仿佛你不是一个中国人似的,满嘴的"他们""他们",哪还有一丁点的爱国心,你懂得什么是爱国主义,什么是民族主义吗?!好象说过去的就让它过去吧,这是国耻,不是小孩吵架,你懂不懂呀?!

唉,原来就觉得你是一个没有内涵,眼神空洞无物的人,现在看来,果然如此.幸好你已经不在凤凰卫视做主持了,否则真是玷污了凤凰卫视和那帮特别好的主持人的名声.

当讲到内地现在还在播一些在台湾早已过气的歌手的歌时,孟广美又说前几天还在播九百九拾九朵玫瑰,是中央台哦.还特别强调是中央台.真是可笑之极,经典老歌谁说就不能播,台湾的费玉清的清音乐不都在唱老歌吗?!好的老的音乐有人愿意去聆听,难道就那么可笑吗?

在这里我就不再提孟广美说的所谓洗手间和厕所的事了,免得脏了我的笔.

本是同根生,相煎何太急.何况大陆的经济腾飞是全球华人有目共睹的.

内地的电视台真不应该再请你做主持了,亏你在内地还赚了不少钱呢,就算是看在钱的份上,你也不该胡说八道,这次第,怎一个"气"字了得?

冰鱼这两期“红色风暴”地址:
红色风暴 两岸艺界大不同(上)
红色风暴 两岸艺界大不同(下)

天涯社区讨伐孟广美的贴子
http://www14.tianya.cn/publicforum/Content/funinfo/1/237627.shtml

红色风暴官方网站
http://regine.org/phpbb/viewforum.php?f=14

孟广美签约的内地经纪公司论坛
http://www.long-d.com/luntan/ShowForum.asp?forumid=26

Google妥协了

根据华盛顿邮报的消息,Google的副总法律顾问Nicole Wong说:"巴西政府要求的并不是数十亿页的资料,它们要求的只是很小的并且比较零散、毫无关联性的一部分。"因此Google认为巴西政府 的要求比较"合理",用途也比较"正当",因为巴西政府需要这些资料来调查多宗案件,所以Google在昨天发表了声明,声称会遵从法官的要求,交出涉嫌 利用Orkut传播不良信息的Orkut用户资料。
转自:http://www.gseeker.com/

2006-09-02

所有软件都应该遵守的"六大原则"

所有软件都应该和Google一样遵守"六大原则":

1、安装
应用程序不应通过将自己隐藏于用户正在安装或升级的程序中等方式,秘密地安装在用户的计算机上。既使在捆绑安装时,也必须将各种应用程序的功能明确告知用户。

2、事前披露
当一项应用程序被安装或激活时,必须向用户说明其自身的主要和重要功能。

3、易于删除
用户应能轻易掌握如何终止或删除某项应用程序的方法。一旦某项应用程序被终止或删除,它不应继续保持活动状态或在一段时间后自行激活,或由另一程序激活。

4、动作透明
如果某项应用程序对用户体验产生了影响或改变,应向用户告知该程序就是引起这些变化的原因。

5、信息传送提示
如果一项应用程序收集并传送用户的地址等个人信息,用户应当被告知。

6、兼者择邻而居
应用程序提供者不应容许自己的产品被其他不遵守上述原则的应用程序所捆绑。

试用Firefox 2 Beta2

刚看到Firefox升级到了2.0b2版,赶紧下下来体验了一下,总的来说还是不错的,不过由于我所熟悉使用的扩展都没更新,所以暂时卸载回1.5.0.6版继续使用,等2.0正式版出来再换吧。体验一番后总的感觉有几个:

1. 程序反应速度比1.5.0.6快了些。
2. 用户界面上有了微调,据说是新雇用的设计师的成果,有点透明三维的那种效果,鼠标放上去会加亮那种。
3. 扩展不升级就用不了,我只有阻挡广告的扩展还能用,别的都提示不兼容。
4. 所有标签上都加了关闭按钮---Tab Mix Lite又不被兼容,FireFox的标签选项也只有那么寥寥几个,很不习惯。