Board logo

Subject: 新手学习体会连载一 [Print This Page]

Author: springkang    Time: 2004-2-13 09:58     Subject: 新手学习体会连载一

昨天刚学习了一下CnWizards专家包调试说明书,地址见:http://www.cnvcl.org/showdetail.php?id=243,又长了不少知识,收获很多,说明书写得很详细,但也感到有些方面少写了一点关键的东东,让我等小菜菜走了不少曲线,今天小第我斗胆班门弄斧,将我的一点体会写出来,好普渡众小菜菜,早日修成正果^_^。。。。。
此次发表主要是对该说明书进行点补充,使它更适合新手上手:
一、关于源码学习     首先要安装包。在delphi集成环境中,file/open打开packages目录下的CnPack_D7.dpk,再点install就将控件包装上了,以后再打开SOURCES/wizard/CnWizards_D7.dpr,打开其中的窗体时就不会再提示找不到控件了。接下来就是查看源码了,耐心点,祝好运!!~_~
二、关于基本调试方法
      引用原文:其次,为了让被运行的IDE能加载编译后的专家DLL进行源码级调试,也必须在注册表的HKEY_CURRENT_USERSoftwareBorlandDelphi5.0Experts中添加一项加载此DLL的字串值CnWizards_D5,如CnWizards_D5的加载项已经存在,则需要改成目标DLL所在的位置。另外DELPHI调试器有个奇怪的规矩,那就是只有项目文件和编译后输出的DLL必须在同一个目录下才能进行源码级的调试,因此需要临时修改CnWizards_D5的项目设置,将Directories/Conditional里的Output Directory清空,这样编译后的输出DLL就放到了dpr文件的所在目录(原来是在....Bin目录下),注册表中的值CnWizards_D5也需要设置成输出DLL的全路径,如“D:CnPackWorkscnpackSourceWizardCnWizards_D5.DLL
     我的补充:Directories/Conditional是在project/option里面。如果安装了cnwizard,在注册表HKEY_CURRENT_USERSoftwareBorlandDelphi5.0(我的是delphi7.0)Experts里会自动添加字串值CnWizards_D5(我的是CnWizards_D7),其值指向E:\Program Files\CnPack\CnWizards\CnWizards_D71.dll(请注意这是我的cnpack的安装目录,你的不一定是这样的)。因此,为了进行源码级调试,我将CnWizards_D7改名为CnWizards_D711,同时新建字符串值CnWizards_D7,指向
E:\cnwizards_d7\cnpack_20040119\cnpack\Source\Wizard\CnWizards_D7.dll。这里请注意一下,E:\cnwizards_d7\cnpack_20040119是我的下载的源程序包的目录,你的不一定将源码包放在此目录,而指向Source\Wizard\CnWizards_D7.dll才是关键。当然,该目录 下的nWizards_D7.dll还未生成,所以启动delphi7的时候会提示找不到CnWizards_D7.dll,这是正常的。好了,当我们在delphi中打开CnWizards_D7.dpr,在project/compile all projects,仅此一步就行了,在E:\cnwizards_d7\cnpack_20040119\cnpack\Source\Wizard目录下会生成CnWizards_D7.dll。成功了。关闭delphi再重启,当~~~~~,又有错误提示,这个错误提示不是说找不到dll文件,而是说找不到数据文件,确认后进入,cnpack运行正常,可是,好像有点小问题哦,不知你们发现没有,原来是没有图标?这个好办,将E:\Program Files\CnPack\CnWizards里的data,lang,user,help,icons五个文件夹拷到E:\cnwizards_d7\cnpack_20040119\cnpack\Source\Wizard,再关闭delphi重新启动,一切安静了#@$%%%^#。
     最后请理解两个目录:E:\cnwizards_d7\cnpack_20040119\cnpack\Source\Wizard\是我的源码包的目录,而E:\Program Files\CnPack\CnWizards是我将cnpack安装的目录。
     一点思考:cnpack是如何调用这些help和icons的,我还没弄清楚,也是刚学习的嘛,所以请大家研究源码后贴出来共同进步哦!
三、关于三、日志记录型工具Overseer的使用/2、采用uDbg单元和Overseer进行日志输出与记录
      uDbg.pas是源码包自带的,放在source/debug目录 下面。原说明文说了几点如何使用,但也少了几个关键点,让我等小菜菜费了不少力才搞定,~~55555~~。首先是要将uDbg.pas编译,点击component/install component,之后会出现uDbg.dcu.把它拷到delphi安装目录下的lib里面。接下来就是按说明书的做了。good luck !:cool:
     感谢cnpack开发组的全体成员,还有yygw大哥,给我等小菜提供了如此好的东东,是我们中国人的骄傲!!
    我的发表是对大家的支持, 你们的回复是我继续写的动力。
Author: springkang    Time: 2004-2-13 10:48     Subject: 一点补充

刚才发现在源码包的bin目录下面有data,help,icons,lang等目录,估计在打包是肯定是要调用这些目录的。
Author: zjy    Time: 2004-2-20 10:13     Subject: 欢迎欢迎!!

非常感谢 springkang 朋友对 CnPack 的关注和支持!大家的支持是 CnPack 开发组持续开发最大的动力!!

另外,很报歉现在才回复,我最近在外地,上网不太方便,Passion 工作也很忙,希望 springkang 再接再励哟:)
Author: zjy    Time: 2004-2-20 10:16

一、关于源码学习
CnWizards 的设置目标是任何时候从 CVS 中取出源码,都可以在干净的 Delphi 中直接编译通过。不过部分窗体上放置了 CnPack 包中的控件,所以要查看要修改源码的话,需要安装 CnPack 包。
Author: zjy    Time: 2004-2-20 10:26

二、关于基本调试方法
在 CVS 的  cnpack\Source\Tools\CnWizardsSetup 目录下是专家自动安装程序源码,也可以自己编译一份出来,或者把 CnWizards 安装目录下的 Setup.exe 拿来用也行,这个文件会自动注册同目录下的专家 DLL 文件到注册表,可以带参数运行,见源码说明。

“另外DELPHI调试器有个奇怪的规矩,那就是只有项目文件和编译后输出的DLL必须在同一个目录下才能进行源码级的调试”这一句话,是经验得出的,我们也觉得很奇怪,当输出目录不在当前目录下时,调试器会找不能自动装载工程的符号表,用一些特别的方法,有时候可以装载,但不保证有效,后来发现只有不设定输出目录时,才能比较可靠地设断点调试。

data,help,icons,lang这些目录都是专家包运行时用到的数据文件,需要与专家DLL放在同一目录下。
Author: zjy    Time: 2004-2-20 10:39

三、关于三、日志记录型工具Overseer的使用/2、采用uDbg单元和Overseer进行日志输出与记录
uDbg.pas 是 Overseer 调试工具的接口单元,我对它进行了一些修改并增加了部分功能。使用时可以把这个文件加到用户工程文件中或者把它所在的路径加到 IDE 的搜索路径中就可以了。事实上 CnPack 开发组已经计划了一个功能比 Overseer 更强大的 CnDebugger,只是没有时间来完成:(有兴趣的朋友可以看看这个任务单:
http://www.cnvcl.org:8008/cnpack/tktview?tn=14,7

因为 CnPack 相关文档不足,让大家在分析时走了一些弯路,在此表示歉意,以后我们会多多注意设计和开发的文档化的,多谢支持!!
Author: zjy    Time: 2004-2-20 10:42

一点补充
CnWizards 的安装包是使用 NSIS 制作的,安装脚本见 cnpack\Install\Src\CnWizards_Install.nsi,这个脚本是纯手写的,说明见 Readme 文件。

NSIS 下载见:
http://www.cnvcl.org/showdetail.php?id=149
Author: springkang    Time: 2004-2-23 08:23     Subject: 多谢yygw大哥的指点和鼓励!

其实我真的很菜,但我一定会继续努力学习的。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0