2009年8月31日星期一

To be, or not to be


我写了一些自动化脚本,为了在C/S结构软件中编写服务端时,有个客户端可以自已运行,省得一心二用,左顾右盼。我自己用到开发过程中,这个小东西效果很好,省了很多事。
它看起来确实不错呀,项目组长发现了,推荐给测试人员吧。我摇身一变,从开发变成测试开发了。但是GUI测试确实烦人呀,好歹将就着能用了,我真希望到此为止吧。但是,用户的需求是不断的,然而,我希望这些工作应该是由测试人员来做的。因为,工具只是辅助工作的,只有使用他的人才知道怎么最有效。
不能说服别人做好,如果真的做的好,别人自然会按你做的来;同样,我也不希望把东西做好了送到别人跟前让人承认这是好东西。

我把桌面的AutoIt背景换掉了,到此为止。附加的一个原因是,没有发现AutoIt中动态调用函数的方式,再做更多工作需要的代价过高了。

2009年8月18日星期二

WTL及其他


WTL有更新了,8.1,在VS2008中安装Wizard时再也不会复制-打开-替换-保存-关闭操作了。
WTL程序中,包含ActiveX控件要导入类型库,在stdafx.h中加入
#import "c:/windows/system32/wmp.dll" raw_interfaces_only, raw_native_types, no_namespace, named_guids
Flash控件可能不在system32下了,跑到Macromed中的某个地方了。

包含RichEdit控件,要在创建前进行
HINSTANCE hInstRich = ::LoadLibrary(CRichEditCtrl::GetLibraryName());
ATLASSERT(hInstRich != NULL);
否则主窗体创建失败。 
结束前
::FreeLibrary(hInstRich); 

Subversion也支持external文件了,但是还存在已知问题,所以多数时候还是没用,因为我想external的多数是二进制文件。

好长时间没注意,FOP也更新到0.95了。

2009年8月12日星期三

DON'T DO THIS


Delphi的帮助中有一个条目是Returning a PChar local variable,当然这个条目说的是反例,是说长字符串与PChar之间的差别会引起的问题。在这个条目中所举的例子里,特别注释了“// DON'T DO THIS”,但是正如这一条目开头便指出的,这却是一个常见的错误,所以这样写法还是屡见不鲜,而且通常看起来也似乎正确,但是,并不是这样的。

function ReturnLocalStringToPChar: PChar;
   var S, Y: string;
   begin
      S := 'aaa';
      Y := 'bbb';
      S := S + Y;
      Result := PChar(S);
   end;

   procedure Test(S: string)
   var
     A: string;
     P: PChar;
  begin
     P := ReturnLocalStringToPChar;
     WriteLn(P);
     A := GetCurrentDir;
     WriteLn(P);
  end;

如果你认为两次打印的内容是一样的,那就错了。

所以,文档是一定要看的。想起邮件列表中有人回答问题的同时说不知道为什么很多人不看文档,而他对很熟悉的东西也是要常翻翻文档的。
同样,在前几天,在同别人调试AutoIt3脚本时,发现因为没有看到最新的文档,对返回值的判断不正确的情况。

看清楚文档,用明确知道的东西,知道自己在写什么,才可能写出可靠的代码。