<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[stanleyxu 的秘密基地]]></title><description><![CDATA[　stay tuned ^^)]]></description><link>https://blog.youkuaiyun.com/Stanley_Xu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Stanley_Xu]]></copyright><item><title><![CDATA[Unicode 随想]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/2035925</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/2035925</guid><author>Stanley_Xu</author><pubDate>Fri, 11 Jan 2008 06:48:00 +0800</pubDate><description><![CDATA[最近 CodeGear 的工程师开始谈论[1][2][3][4][5] Delphi 全面支持 Unicode 的问题了。尽管这个是十年前的新闻，但对于 Delphi 的粉丝来说，迟到总比不到要强。本文是我对目前 Unicode 封装计划的一些看法。 现状如果你不了解 AnsiString 和 WideString，请先去网上查阅相关资料。微软的 Visual C++ 在提供 Unic]]></description><category></category></item><item><title><![CDATA[查询接口小议]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1722313</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1722313</guid><author>Stanley_Xu</author><pubDate>Thu, 02 Aug 2007 11:59:00 +0800</pubDate><description><![CDATA[前面的废话接口大大增强了类设计的灵活性，类似于c++中的多重继承。不管你是否真正了解接口 (Interface)，但它已经默默的在为你的程序服务了。你可以去看一下 TComponent 的定义部分，你会发现它内部已经封装了2个接口：IInterface, IInterfaceComponentReference。不难发现，Delphi 中除了原子类 TObject 之外，任何类有且只有一个父类]]></description><category></category></item><item><title><![CDATA[可能你不知道的内存泄漏]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1699834</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1699834</guid><author>Stanley_Xu</author><pubDate>Fri, 20 Jul 2007 02:53:00 +0800</pubDate><description><![CDATA[Delphi 是如何管理 string 的？ 为了提高 string 的读写性能 Delphi 采用了 Copy-on-Write 机制进行内存管理。简单来说，在复制一个 string 时并不是真的在内存中把原来 string 的内容复制一份到另外一个地址，而是把新的 string 在内存映射表中指向同原 string 相同的位置，并且把那块内存的引用计数加一。这样就省去了复制字符串的]]></description><category></category></item><item><title><![CDATA[你的单例足够单吗]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1604060</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1604060</guid><author>Stanley_Xu</author><pubDate>Fri, 11 May 2007 09:41:00 +0800</pubDate><description><![CDATA[什么是单例：单例模式（Singleton）是一种常用的软件设计模式。在应用这个模式时，单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象，这样有利于我们协调系统整体的行为。实现单例模式的思路是：一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法（必须是静态方法，通常使用getInstance这个名称）；当我们调用这个方法时，如果类持有的引用不为空就返回这个引]]></description><category></category></item><item><title><![CDATA[如何访问私有成员变量和函数 (修正版)]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1557107</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1557107</guid><author>Stanley_Xu</author><pubDate>Mon, 09 Apr 2007 00:49:00 +0800</pubDate><description><![CDATA[这篇文章介绍一些 Delphi 穿透 OOP 约束的技巧。访问保护的 (protected) 变量如果是某个类的保护变量，可以在任何地方，通过如下方法访问：type  TSomeClassAccess = class(TSomeClass);begin  TSomeClassAccess(Object1).protected_Bool := False;  TSomeClass]]></description><category></category></item><item><title><![CDATA[TntControls 被糟蹋了]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1553642</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1553642</guid><author>Stanley_Xu</author><pubDate>Fri, 06 Apr 2007 06:19:00 +0800</pubDate><description><![CDATA[原本打算介绍一下 Delphi 的一些优秀开源项目，其中就有我很喜欢的 TntControls。它为大部分 Delphi 原生控件提供了 Unicode 支持。很可惜，作者最近决定不打算继续维护了。为了让这套库可以继续活下去，在一片质疑和惋惜声中，它被转到了新东家 TMS Software 手下。TMS 是何许公司？应该算大的控件商了吧，相信很多 Delphi 粉丝都听说过，旗下控件超过应该有百个]]></description><category></category></item><item><title><![CDATA[到底谁是流氓]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1514749</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1514749</guid><author>Stanley_Xu</author><pubDate>Mon, 26 Feb 2007 13:10:00 +0800</pubDate><description><![CDATA[看见新闻频道的这篇文章 “疯狂VC邪恶的钱：一个视频站创始人的狼狈退出”http://news.youkuaiyun.com/n/20070224/101540.html看见里面这么一段在视频网站普遍无法盈利的情况下，流量成为衡量其前途好坏的唯一指标。为了实现目标，林风不得不大把“烧钱”。他甚至还通过与流氓软件合作，以强制弹出的形式加大网站流量。真好笑，就是有象你们这样的流氓站点，才早就了今天这么多的流氓软件]]></description><category></category></item><item><title><![CDATA[告别畸形的工具提示]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1511572</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1511572</guid><author>Stanley_Xu</author><pubDate>Sun, 18 Feb 2007 08:45:00 +0800</pubDate><description><![CDATA[问题的提出： Delphi 的怪异封装我们见到不少了。工具提示 (Tooltip 或者 Hint) 属于一个典型的畸形封装。或许是 Borland 的工程师想让 Delphi 的应用程序与众不同，而故意将工具提示最外层边框不用标准的黑色。(这个问题可以通过修改 Controls.pas 来解决，即画边框时候修改边框风格。) 但新的 Windows Vista 系统对工具提示做了调整。原先的“浅黄色]]></description><category></category></item><item><title><![CDATA[冤枉！浏览器缘何会丢失 Cookie]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1509503</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1509503</guid><author>Stanley_Xu</author><pubDate>Tue, 13 Feb 2007 18:49:00 +0800</pubDate><description><![CDATA[问题描述： 最近一段时间用户总反应使用 GOSURF 的时候经常丢 cookie。问我是否内核里面做了一些错误的修改。我检查许久也没什么头绪，唯一觉得不同的就是，只在运行期加载 GOSURF 自己的用户标示 (User agent)。网上搜索一下关于丢 cookie 的文章，大部分都直指国内最红火的Discuz论坛。也看见该站技术人员解释道：因为 cookie 的有效期、作用域造成丢失，需要通过修]]></description><category></category></item><item><title><![CDATA[子窗体弹出位置错误]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1504745</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1504745</guid><author>Stanley_Xu</author><pubDate>Wed, 07 Feb 2007 20:33:00 +0800</pubDate><description><![CDATA[在设计窗体时通常会把子窗体的 Position 设置成 poMainFormCenter。也就是说，子窗体弹出的位置是主窗体的正中。但是如果把主窗体拖动到屏幕左下角，而且主窗体的50％部分已经超出了屏幕范围，这个时候主窗体的正中其实已经不在屏幕范围之内了。这个时候弹出的子窗体可能部分或者完全处在屏幕之外了。具体解决方法：修改 Forms.pas，修改 procedure TcustomForm]]></description><category></category></item><item><title><![CDATA[如何访问私有成员变量和函数]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1496113</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1496113</guid><author>Stanley_Xu</author><pubDate>Sun, 28 Jan 2007 12:39:00 +0800</pubDate><description><![CDATA[一说到修改 Delphi 源码或者访问对象的私有成员函数，很多人马上可以说出种种危害来否定我。这种做法我也提倡，但是有时候如果可以灵活运用，可以解决由于 Delphi 因为封装不正确而带来的问题。我在这里分享一些技巧：1.     访问私有成员变量如果是 protected 的变量，可以用如下方法访问：type  TSomeClassAccess = class(TSomeClass)]]></description><category></category></item><item><title><![CDATA[打入消息循环的另类方法]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1496061</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/1496061</guid><author>Stanley_Xu</author><pubDate>Sun, 28 Jan 2007 11:09:00 +0800</pubDate><description><![CDATA[正常打入消息循环的方法： 如果要监视 WM_CONTEXTMENU 消息来实现菜单的右键菜单，一般做法是通过子类化 (subclass) Menus.PopupList.WndProc 的方法来处理窗口消息。简单讲就是：打入消息循环，完成我的处理，再把消息交还给原先的消息处理函数。当不需要监视消息的时候再退出消息处理（un-subclass）。这样做的好处是：不打破控件的结构。procedur]]></description><category></category></item><item><title><![CDATA[由演示程序 coolstuf 而找到的工具栏错位问题]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/285743</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/285743</guid><author>Stanley_Xu</author><pubDate>Fri, 11 Feb 2005 12:58:00 +0800</pubDate><description><![CDATA[DELPHI 光盘中有一个浏览器的演示程序 coolstuf。我发现它的奇怪问题：一旦你将第三行工具栏“链接栏”拖动到最顶端，然后再拖回原来的位置，那么工具栏最下方会多出一个大概 40px 的空白区域。这个显然是 TCoolBar 没有封装好的缘故，我暂时称该问题为“工具栏错位”。我发现如果有 Band 设置过 FixedSize=True，就会出现偏差，没设置过就没有问题。我猜测可能是工具栏]]></description><category></category></item><item><title><![CDATA[用来替换 MaskMatch 的通配符比较函数]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/99876</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/99876</guid><author>Stanley_Xu</author><pubDate>Fri, 10 Sep 2004 01:08:00 +0800</pubDate><description><![CDATA[Delphi 提供的通配符匹配函数 TMask.Matches 有些问题：如果通配符字符串太长，比如进入 hotmail 邮箱时的地址有大概250个字符。这会导致 TMask.Matches 函数出错，并导致整个程序崩溃。我在网上找了一些不同的实现，并且做了性能比较。现在我优化过的版本分享出来。 type  TMaskMatchResult = record    Offset: Inte]]></description><category></category></item><item><title><![CDATA[可能你不知道的 CPU 资源杀手]]></title><link>https://blog.youkuaiyun.com/Stanley_Xu/article/details/99874</link><guid>https://blog.youkuaiyun.com/Stanley_Xu/article/details/99874</guid><author>Stanley_Xu</author><pubDate>Fri, 10 Sep 2004 01:01:00 +0800</pubDate><description><![CDATA[问题的提出：如果你没有用过 TAction，或许你不该说你会 Delphi。TAction 大大简化了界面逻辑的关联，加速了项目的开发。不过我在程序中大量使用 TAction 时，无意发现这样一个问题：如果程序的某个窗体里有超过100个 TAction，在运行这个程序时，只要不停的在该窗体上快速移动鼠标，CPU 占用率会猛增到 30% 左右。 为什么会有如此高的 CPU 占用？使用]]></description><category></category></item></channel></rss>