自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stanleyxu 的秘密基地

 stay tuned ^^)

  • 博客(15)
  • 收藏
  • 关注

原创 Unicode 随想

最近 CodeGear 的工程师开始谈论[1][2][3][4][5] Delphi 全面支持 Unicode 的问题了。尽管这个是十年前的新闻,但对于 Delphi 的粉丝来说,迟到总比不到要强。本文是我对目前 Unicode 封装计划的一些看法。 现状如果你不了解 AnsiString 和 WideString,请先去网上查阅相关资料。微软的 Visual C++ 在提供 Unic

2008-01-11 06:48:00 2483 1

原创 查询接口小议

前面的废话接口大大增强了类设计的灵活性,类似于c++中的多重继承。不管你是否真正了解接口 (Interface),但它已经默默的在为你的程序服务了。你可以去看一下 TComponent 的定义部分,你会发现它内部已经封装了2个接口:IInterface, IInterfaceComponentReference。不难发现,Delphi 中除了原子类 TObject 之外,任何类有且只有一个父类

2007-08-02 11:59:00 2880 1

原创 可能你不知道的内存泄漏

Delphi 是如何管理 string 的? 为了提高 string 的读写性能 Delphi 采用了 Copy-on-Write 机制进行内存管理。简单来说,在复制一个 string 时并不是真的在内存中把原来 string 的内容复制一份到另外一个地址,而是把新的 string 在内存映射表中指向同原 string 相同的位置,并且把那块内存的引用计数加一。这样就省去了复制字符串的

2007-07-20 02:53:00 3308 8

原创 你的单例足够单吗

什么是单例:单例模式(Singleton)是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引

2007-05-11 09:41:00 2301 1

原创 如何访问私有成员变量和函数 (修正版)

这篇文章介绍一些 Delphi 穿透 OOP 约束的技巧。访问保护的 (protected) 变量如果是某个类的保护变量,可以在任何地方,通过如下方法访问:type  TSomeClassAccess = class(TSomeClass);begin  TSomeClassAccess(Object1).protected_Bool := False;  TSomeClass

2007-04-09 00:49:00 4093 5

原创 TntControls 被糟蹋了

原本打算介绍一下 Delphi 的一些优秀开源项目,其中就有我很喜欢的 TntControls。它为大部分 Delphi 原生控件提供了 Unicode 支持。很可惜,作者最近决定不打算继续维护了。为了让这套库可以继续活下去,在一片质疑和惋惜声中,它被转到了新东家 TMS Software 手下。TMS 是何许公司?应该算大的控件商了吧,相信很多 Delphi 粉丝都听说过,旗下控件超过应该有百个

2007-04-06 06:19:00 2451 1

原创 到底谁是流氓

看见新闻频道的这篇文章 “疯狂VC邪恶的钱:一个视频站创始人的狼狈退出”http://news.csdn.net/n/20070224/101540.html看见里面这么一段在视频网站普遍无法盈利的情况下,流量成为衡量其前途好坏的唯一指标。为了实现目标,林风不得不大把“烧钱”。他甚至还通过与流氓软件合作,以强制弹出的形式加大网站流量。真好笑,就是有象你们这样的流氓站点,才早就了今天这么多的流氓软件

2007-02-26 13:10:00 1885

原创 告别畸形的工具提示

问题的提出: Delphi 的怪异封装我们见到不少了。工具提示 (Tooltip 或者 Hint) 属于一个典型的畸形封装。或许是 Borland 的工程师想让 Delphi 的应用程序与众不同,而故意将工具提示最外层边框不用标准的黑色。(这个问题可以通过修改 Controls.pas 来解决,即画边框时候修改边框风格。) 但新的 Windows Vista 系统对工具提示做了调整。原先的“浅黄色

2007-02-18 08:45:00 4745 2

原创 冤枉!浏览器缘何会丢失 Cookie

问题描述: 最近一段时间用户总反应使用 GOSURF 的时候经常丢 cookie。问我是否内核里面做了一些错误的修改。我检查许久也没什么头绪,唯一觉得不同的就是,只在运行期加载 GOSURF 自己的用户标示 (User agent)。网上搜索一下关于丢 cookie 的文章,大部分都直指国内最红火的Discuz论坛。也看见该站技术人员解释道:因为 cookie 的有效期、作用域造成丢失,需要通过修

2007-02-13 18:49:00 2886

原创 子窗体弹出位置错误

在设计窗体时通常会把子窗体的 Position 设置成 poMainFormCenter。也就是说,子窗体弹出的位置是主窗体的正中。但是如果把主窗体拖动到屏幕左下角,而且主窗体的50%部分已经超出了屏幕范围,这个时候主窗体的正中其实已经不在屏幕范围之内了。这个时候弹出的子窗体可能部分或者完全处在屏幕之外了。具体解决方法:修改 Forms.pas,修改 procedure TcustomForm

2007-02-07 20:33:00 2144

原创 如何访问私有成员变量和函数

一说到修改 Delphi 源码或者访问对象的私有成员函数,很多人马上可以说出种种危害来否定我。这种做法我也提倡,但是有时候如果可以灵活运用,可以解决由于 Delphi 因为封装不正确而带来的问题。我在这里分享一些技巧:1.     访问私有成员变量如果是 protected 的变量,可以用如下方法访问:type  TSomeClassAccess = class(TSomeClass)

2007-01-28 12:39:00 3658

原创 打入消息循环的另类方法

正常打入消息循环的方法: 如果要监视 WM_CONTEXTMENU 消息来实现菜单的右键菜单,一般做法是通过子类化 (subclass) Menus.PopupList.WndProc 的方法来处理窗口消息。简单讲就是:打入消息循环,完成我的处理,再把消息交还给原先的消息处理函数。当不需要监视消息的时候再退出消息处理(un-subclass)。这样做的好处是:不打破控件的结构。procedur

2007-01-28 11:09:00 2073

原创 由演示程序 coolstuf 而找到的工具栏错位问题

DELPHI 光盘中有一个浏览器的演示程序 coolstuf。我发现它的奇怪问题:一旦你将第三行工具栏“链接栏”拖动到最顶端,然后再拖回原来的位置,那么工具栏最下方会多出一个大概 40px 的空白区域。这个显然是 TCoolBar 没有封装好的缘故,我暂时称该问题为“工具栏错位”。我发现如果有 Band 设置过 FixedSize=True,就会出现偏差,没设置过就没有问题。我猜测可能是工具栏

2005-02-11 12:58:00 2426 1

原创 用来替换 MaskMatch 的通配符比较函数

Delphi 提供的通配符匹配函数 TMask.Matches 有些问题:如果通配符字符串太长,比如进入 hotmail 邮箱时的地址有大概250个字符。这会导致 TMask.Matches 函数出错,并导致整个程序崩溃。我在网上找了一些不同的实现,并且做了性能比较。现在我优化过的版本分享出来。 type  TMaskMatchResult = record    Offset: Inte

2004-09-10 01:08:00 2863

原创 可能你不知道的 CPU 资源杀手

问题的提出:如果你没有用过 TAction,或许你不该说你会 Delphi。TAction 大大简化了界面逻辑的关联,加速了项目的开发。不过我在程序中大量使用 TAction 时,无意发现这样一个问题:如果程序的某个窗体里有超过100个 TAction,在运行这个程序时,只要不停的在该窗体上快速移动鼠标,CPU 占用率会猛增到 30% 左右。 为什么会有如此高的 CPU 占用?使用

2004-09-10 01:01:00 2855

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除