最近维护一个 Delphi 老程序, 是那种没有丝毫模块化概念的代码, 上千行的函数比比皆是, Unit 之前相互引用错综复杂. 光看代码就头大. 工欲善其事, 必先利其器, 这话真的不假. 尤其delphi 7是十多年前的产品了, 当时看是非常完美的IDE, 但放在现在看, 有很多东西缺失了, 比如代码折叠, outline和编辑器双向navigate.
我最终在几个插件的帮助下, 厘清了代码. 帮助最大的工具有:
1. 在dummzeuch版GExperts的Code Format 功能2. CnPack的Procedure list 和Source Highlight 功能3. Gexperts的 grep 功能但凡我使用的工具, 一定要将它配的特别顺手才行. 下面是这次Delphi 7的插件配置.Delphi7 Lite Full 版本(国人整理集成的优化版)地址 ,该版本已包括Gexperts(已集成dummzeuch的code format)和CnPack和Delphi Speedup和DDevExtensions.
=================================Delphi Speedup=================================功能: 提示Delphi 7的启动速度下载: http://andy.jgknet.de/dspeedup=================================GExperts =================================GExperts原版: http://www.gexperts.org常用的功能: Grep 搜索 Open file, 可代替Delphi自身的View Form/View Unit **其他配置: 在GExperts Configuration/Code Editor中, 启用editor enhancement, 然后可以配置editor的toolbar, 将 Editor Experts(包含很多编辑增强功能) 加到toolbar上, 方便以后使用. dummzeuch版GExperts: 增加了"全文代码格式化"功能 http://www.dummzeuch.de/delphi/gexperts/english.html 安装方法: 解压后, 将 preview.pas 和所有的.ini, 以及 editorexpert/GExpertsD7.dll 复制到 gexperts的安装目录中. 使用方法: 在gexperts的Editor Experts中, 能找到 Code formatter菜单项. =================================CnPack 插件=================================CnPack最有特点的功能是: Code outline, 为Editor 加了行号, Procedure list, 显示当前Unit中的class和procedure, 而且还会在Editor中, 加一个工具条, 能显示当前光标所在的类和函数, 这个非常赞, 比GExperts的Procedure List功能更强.本人非常喜欢Notepad++的Highlight selected occurrences功能, 用其他IDE/Editor都要找到这个功能.
Delphi 方面找了很久, 只有CnPack Source Highlight插件有一个类似的功能, 高亮显示当前标识符, 需要打开 Enable Background Highlight Current Identifier at Cursor 选项. 另外, 关闭Enable background highlight current line CnPack由于功能很多, 我仅仅启用如下几个插件, 以免显得杂乱 Form Design Wizard Code Editor Wizard Procedure List Wizard IDE Main Form Enhancements Editor Enhancements, 编辑器增加行号, tab头关闭其他文件 Source Highlight Enhancements, 高亮线条匹配begin-end, IDE Enahancements Settings Form Designer Enhancements Messagebox visual designer
=================================
Delphi IDE Theme editor工具, 我仍选Obsidian必须在cnpack/source highlight settings中, 关闭 Enable background highlight current line, 否则当前行看不清.=================================主页:http://code.google.com/p/delphi-ide-theme-editor/网盘下载: http://www.everbox.com/f/97PQlnbm1o6sD8pCEWcqguAIPo
Delphi 2007版以上, 很多组件: QDAC, QJson, QXml 组件: http://blog.qdac.cc/
一套Delphi代码稳定的IOS和Android两个平台的APP: http://www.orangeui.cn/index.phpSqlLite封装:选择的是 Simple Delphi Wrapperhttp://www.itwriting.com/blog/?page_id=659下载非unicode那个版本(unicode版本仅适用于Delphi 2009以上)特点:1. 需要很应用程序一起发布sqlite3.dll,2. delphi 项目中需要将wrapper的SQLite3.pas和SQLiteTable3.pas加进去.3. 并不是vcl组件, 数据结果集不是data aware的.
因为Simple Delphi Wrapper并不是data aware组件, fastreport的dataset就不能和它连.
我的解决方法是: 使用使用开源的SQLite ODBC Driver(http://www.ch-werner.de/sqliteodbc/), 注意不管是32bit/64bit的windows, 我们都应该使用32bit的odbc驱动, 因为Delphi7开发出的程序一定是32bit的.
在Delphi中, 用TADOConnection连DB, TADOConnection 选择 Microsoft OLE DB Provider for ODBC Drivers 方式, 连接connectionString的写法是
这个方法的好处是: 不必使用odbc管理器dns, 同时TADOQuery是Data aware组件, 这就能和FastReport的 frxDBDataset相联了.