DELPHI 学习心得
文章平均质量分 74
Stanley_Xu
这个作者很懒,什么都没留下…
展开
-
用来替换 MaskMatch 的通配符比较函数
Delphi 提供的通配符匹配函数 TMask.Matches 有些问题:如果通配符字符串太长,比如进入 hotmail 邮箱时的地址有大概250个字符。这会导致 TMask.Matches 函数出错,并导致整个程序崩溃。我在网上找了一些不同的实现,并且做了性能比较。现在我优化过的版本分享出来。 type TMaskMatchResult = record Offset: Inte原创 2004-09-10 01:08:00 · 2918 阅读 · 0 评论 -
可能你不知道的 CPU 资源杀手
问题的提出:如果你没有用过 TAction,或许你不该说你会 Delphi。TAction 大大简化了界面逻辑的关联,加速了项目的开发。不过我在程序中大量使用 TAction 时,无意发现这样一个问题:如果程序的某个窗体里有超过100个 TAction,在运行这个程序时,只要不停的在该窗体上快速移动鼠标,CPU 占用率会猛增到 30% 左右。 为什么会有如此高的 CPU 占用?使用原创 2004-09-10 01:01:00 · 2905 阅读 · 0 评论 -
告别畸形的工具提示
问题的提出: Delphi 的怪异封装我们见到不少了。工具提示 (Tooltip 或者 Hint) 属于一个典型的畸形封装。或许是 Borland 的工程师想让 Delphi 的应用程序与众不同,而故意将工具提示最外层边框不用标准的黑色。(这个问题可以通过修改 Controls.pas 来解决,即画边框时候修改边框风格。) 但新的 Windows Vista 系统对工具提示做了调整。原先的“浅黄色原创 2007-02-18 08:45:00 · 4787 阅读 · 2 评论 -
如何访问私有成员变量和函数 (修正版)
这篇文章介绍一些 Delphi 穿透 OOP 约束的技巧。访问保护的 (protected) 变量如果是某个类的保护变量,可以在任何地方,通过如下方法访问:type TSomeClassAccess = class(TSomeClass);begin TSomeClassAccess(Object1).protected_Bool := False; TSomeClass原创 2007-04-09 00:49:00 · 4186 阅读 · 5 评论 -
可能你不知道的内存泄漏
Delphi 是如何管理 string 的? 为了提高 string 的读写性能 Delphi 采用了 Copy-on-Write 机制进行内存管理。简单来说,在复制一个 string 时并不是真的在内存中把原来 string 的内容复制一份到另外一个地址,而是把新的 string 在内存映射表中指向同原 string 相同的位置,并且把那块内存的引用计数加一。这样就省去了复制字符串的原创 2007-07-20 02:53:00 · 3405 阅读 · 8 评论 -
查询接口小议
前面的废话接口大大增强了类设计的灵活性,类似于c++中的多重继承。不管你是否真正了解接口 (Interface),但它已经默默的在为你的程序服务了。你可以去看一下 TComponent 的定义部分,你会发现它内部已经封装了2个接口:IInterface, IInterfaceComponentReference。不难发现,Delphi 中除了原子类 TObject 之外,任何类有且只有一个父类原创 2007-08-02 11:59:00 · 2906 阅读 · 1 评论 -
你的单例足够单吗
什么是单例:单例模式(Singleton)是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引原创 2007-05-11 09:41:00 · 2365 阅读 · 1 评论 -
Unicode 随想
最近 CodeGear 的工程师开始谈论[1][2][3][4][5] Delphi 全面支持 Unicode 的问题了。尽管这个是十年前的新闻,但对于 Delphi 的粉丝来说,迟到总比不到要强。本文是我对目前 Unicode 封装计划的一些看法。 现状如果你不了解 AnsiString 和 WideString,请先去网上查阅相关资料。微软的 Visual C++ 在提供 Unic原创 2008-01-11 06:48:00 · 2509 阅读 · 1 评论