惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
GbyAI
GbyAI
U
Unit 42
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
D
DataBreaches.Net
N
Netflix TechBlog - Medium
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Check Point Blog
Martin Fowler
Martin Fowler
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
MyScale Blog
MyScale Blog
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
罗磊的独立博客
B
Blog RSS Feed
J
Java Code Geeks
The GitHub Blog
The GitHub Blog

博客园 - 姜乂元

Notepad++ 使用 及 插件开发 记录 EverythingSDK中Everything.h转的Everything.pas 可以关闭显示器的软件 win10 x64 解决hlp文件打开问题 支持正则表达式更名的命令行工具 一个类似ALTRun的程序 一个测试程序迭代的故事05 一个测试程序迭代的故事04 一个测试程序迭代的故事02 一个测试程序迭代的故事01 Delphi5和Delphi7属性编辑器内存泄漏问题的解决 使用Calibre自带工具批量转换电子书格式 用批处理安装卸载程序 Delphi XE7试用记录2 Delphi XE7试用记录1 开发程序时在主要功能之外应当考虑的问题 开心网外挂 天下的导游一般般 使用delphi5加xkol开发的程序还真小。
一个测试程序迭代的故事03
姜乂元 · 2020-06-09 · via 博客园 - 姜乂元

第七个需求 输出信息

测试代码经常要输出信息。一般网上分享的方案都是用ShowMessage之类的窗体输出信息,要点击才可以关闭弹出的窗体,如果用在循环中,可不太友好。

还可以使用OutputDebugString输出调试信息,但不能脱离IDE,还要打开Envent Log窗口,或者配合其他软件才能看到。

也可以使用WriteLn输出到cmd窗口,但会弹出cmd窗口,不美观。

输出到文件也是一种方法,但要打开文件才能查看,一般只用于备查。

下断点,在IDE窗口中查看变量信息,一般也只用于调试。

其实,既然是专门用于测试代码的程序,直接在窗体中增加一个Memo显示信息,更直观,更方便,想复制就复制,想保存就保存,想向前翻看就向前翻看。为了增加灵活性和便捷性,还可以增加几个重载函数,接受不同类型的参数。

当然,Memo和函数都添加到父窗体中就可以。

窗体继承可真方便!

使用Memo可以满足需求,但有个小问题,输出不带样式,无法突出显示重要信息。

换成RichEdit,修改一些输出函数,输出内容就美观多了。

完成!

第八个需求 运行时显示源代码

现在,测试代码太方便了,测试之外的工作都是自动完成的,很多代码都写到了测试程序中,开发其他程序时,有时要从测试程序中找代码,这又带来了一个新问题。

运行程序,找到效果满意的功能后,要再翻看源代码文件才能找到源代码。效率太低!

最好在看到运行效果时,同时看到源代码。

最简单的方法,再添加一个Memo,载入窗体对应的单元文件,在Action执行时,找到Action对应事件的代码,显示这段代码就可以完成任务。在TreeView的Click事件中增加一点代码就可以做到。但是,显示的代码是不带高亮,看着很不习惯。

网上可以搜索到的高亮显示代码的第三方组件有很多。EControl_SyntEdit比较成熟,功能也多,但是商业软件。最知名的SynEdit,也比较成熟,功能也多,而且开源,只是给编译后的程序增加了不少尺寸。测试程序只需要显示Pascal代码,不需要编辑。键盘方案、自动完成、代码折叠、代码组织、多高亮方案等功能都不需要,一些小型的组件更合适。

有一个组件从TMemo继承,重写了WMPrint函数,代码简单,可以突出显示关键字和数字常量,无法突出显示注释。使用效果还可以,修改了一些Bug,基本可以完成任务。

后来又从Lazarus中找到一个高亮组件,从TcustomControl继承,修改一点代码就可以用于Delphi,代码不多,可以突出显示不同的元素。修改了一些Bug后,非常适合测试程序使用。

这些工作只要在父窗体中完成就可以,子窗体一点都不需要修改。

运行测试程序,找到需要的功能,测试的同时就能看到源代码,又有了代码库的功能!

爽!

第九个需求 ActionList编辑器

现在测试代码的步骤简化为,打开测试工程,打开相关窗体,打开ActionList编辑器,新建一个Action,双击Action,在Execute事件中添加代码,然后编译运行程序,点击树的节点,观看代码的作用,同时还可以看到源代码。

经过之前的改造,运行时找代码容易了,设计时却显得不那么容易了。

之前没有关心Action的名称,使用的都是默认名称。打开ActionList编辑器后,显示的都是ActionXX,看着就头大。

可以在修改Action标题时,同时修改名称。但有个问题,名称不能用汉字,用英文或者拼音命名又不符合国人习惯。XE之后的版本虽然可以用中文命名,可兼容问题又来了。最好让ActionList编辑器能同时显示Action的标题,这样可以不增加工作且满足需求。

查了查Delphi的Source文件夹,没有找到ActionList编辑器的源代码,走捷径是不成了。再从以前收集的源代码中找一找,竟然找到一个,不是用于Delphi的,改改居然可以用,能同时显示名称、标题,甚至提示信息,还附带收藏功能和显示标准Action功能。

可用和好用之间可相差了很多工作量,不过虽然修改工作很痛苦,但成功后带来的效率提升却不少。

磨刀不误砍柴工!

有了源代码可以走的更远,可以在新建Action的同时,一次性填写标题、提示及名称。还可以自动设置Action的名称,让后面的序号对齐成3位,这样同一个类别下的Action自动产生的的Execute函数可以在一起。

真没想到,测试需求竟然影响到组件编辑器!