colin

busy to live or busy to die

让C++使用极速的FastMM

由于malloc的低效,一直在寻找替换的方案,最后突发其想,封装一个FastMM的DLL作为C++的内存管理器;然后重载全局的new和delete操作符。如上方法执行之后,再跑原来的测试程序,效率果然与FastMM版本的一致了。我原来以为VC版STL的默认内存管理器,会有大量的优化,后来跟进去才发...

2011-12-06 13:47:46

阅读数:2023

评论数:1

龟速的malloc和神速的FastMM

由于在Delphi项目中,要频繁创建和释放大量小对象,因此担心有效率问题,于是打于GetMem.inc看看,发现FastMM对于小块内存作了很多工作,它预置了一组不同大小的内存池,当要创建一块内存时,FastMM找到大小最相近的内存池分配之,内存释放后回收到池中。这样的做法虽有小量内存浪费,但效率...

2011-12-02 17:24:52

阅读数:1994

评论数:2

Delphi:两个高效的哈希函数

<br />function BKDRHash(buf: Pointer; count: Integer) : Cardinal; assembler; asm PUSH EBX; XOR EBX, EBX MOV EC...

2010-11-30 21:33:00

阅读数:2601

评论数:0

16位图像Alpha混合的实现

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

2009-06-15 00:50:00

阅读数:2898

评论数:2

Ole控件的事件辅助类

Ole控件的事件辅助类林镇群2008-12-6 概述       Delphi对Ole控件作了很好的封装,使用起来要比C++的方便地多,比如想用IE控件,只需要将TWebBrowser拖到窗体上,设置相关属性,处理相关事件,一切和其他控件没有什么区别。       但是使用过程中,我们会发现一个问...

2008-12-06 18:51:00

阅读数:1460

评论数:0

实现编辑控件的增量搜索

实现编辑控件的增量搜索LinZhenqun2007-10-20前言       增量搜索(又叫渐进搜索)是我比较喜欢的一种搜索方式,这种一边输入一边搜索的模式常常能更快的找到关键字,特别是在关键字记得不全的时候。大部分代码编辑器都提供了增量搜索的功能,比如Delphi,VS。在Delphi,我用得...

2007-10-20 14:03:00

阅读数:3188

评论数:2

绘制玻璃效果

 绘制玻璃效果LinZhenqun2007-10-5 前言       现代软件对于用户体验的要求越来越高,特别是对于界面,当人们不再喜欢泛味的经典风格时,渐变效果的界面出来了,这一点在Office2003可以体显出来。但现在,渐变效果似乎也不能满足审美要求了,越来越多的软件尝试用玻璃效果来呈现,...

2007-10-05 17:43:00

阅读数:5534

评论数:9

基于栈的对象

基于栈的对象C++的对象是基于栈的,你可以像普通数据类型一样声明它,访问它的成员,调用它的方法,然后由编译器自动清理栈现场,C++的对象更像一个增强的结构。而后来的许多面向对象语言如Java,C#等都采用了基于堆的对象机制。Object Pascal呢?毫无疑问它的对象也是基于堆的,当我们看到对象...

2007-08-28 13:13:00

阅读数:3003

评论数:5

访问祖先类的虚方法

访问祖先类的虚方法问题提出       在子类覆盖的虚方法中,可以用inherited调用父类的实现,但有时候我们并不需要父类的实现,而是想跃过父类直接调用祖先类的方法。举个例子,假设有三个类,实现如下:type  TClassA = class    procedure Proc; virtua...

2007-08-23 10:17:00

阅读数:2462

评论数:1

Delphi接口的底层实现

Delphi接口的底层实现引言       接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的;对于服务端的类来说,如果它想实现某种服务,实现与该服务相关的接口即可,它也不必与使用服务的客户端进行过多的交互。这种...

2007-03-04 16:25:00

阅读数:6828

评论数:5

从普通函数到对象方法 ------Windows窗口过程的面向对象封装

从普通函数到对象方法------Windows窗口过程的面向对象封装 开始,由VirtualAlloc想起      我在查看VirtualAlloc这个API的时候,思绪竟然跳到另一个地方去了。那是以前阅读VCL源码时遗留下来的问题,Classes单元的MakeObjectInstance函数调...

2006-12-20 22:12:00

阅读数:7208

评论数:25

改变Edit的光标

    看着Edit的光标,是不是觉得了无生趣,想不想换个形状来玩玩,其实很简单,且听我道来。    Edit是Windows的标准控件,它是一个系统范围窗口类,所以任何应用程序都能创建它。其实Edit本质上也是一个窗口,MS实现了它却不开放源代码,只暴露出一些接口给我们操作。Edit的光标(Ca...

2006-07-01 16:46:00

阅读数:3754

评论数:2

Delphi事件的广播2

上篇文章写了将事件分离成类的方法来实现事件的广播,这次将参考观察者模式来实现事件的广播。模式中主要有这两个角色:发布者:发布者保存着一张观察者的列表,以便在必要的时候调用观察者的方法。观察者:观察者是现实某些特定接口的类,对于发布者来说,它只关注这些接口,并不关注观察者具体是什么类。为了让发布者更...

2006-05-13 14:44:00

阅读数:2853

评论数:10

Delphi事件的广播

    明天就是五一节了,辛苦了好几个月,借此机会应该尽情放松一番。可是想到Blog好久没有写文章,似乎缺些什么似的。这几个月来在项目中又增长了许多经验,学到许多实际应用的知识。不如把一些比较有用的记录下来,供朋友们参考可好。我想到Delphi的事件,那可真是个方便的东西,初学者在窗体上拉几个控件...

2006-05-07 13:37:00

阅读数:4359

评论数:7

线程杂谈3

(************************************************(* Subject:   线程杂谈3(* Author: linzhenqun(风)(* Time:      2006-3-25(* Blog:      http://blog.csdn.net...

2006-03-30 00:15:00

阅读数:2740

评论数:4

线程杂谈2

作者:linzhenqun(风)时间:2006-2-6Blog: http://blog.csdn.net/linzhengqun------------------------------------------------------------------------------------...

2006-02-06 23:31:00

阅读数:3429

评论数:3

线程杂谈

前言由于项目的关系,所以和线程的接触颇多,常常遇到问题,常常看TThread的代码,又常常想一些办法来解决遇到的问题,所以就有了这篇文章。 正文我们常有工作线程和主线程之分,工作线程负责作一些后台操作,比如接收邮件;主线程负责界面上的一些显示。工作线程的好处在某些时候是不言而喻的,你的主界面可以响...

2006-01-07 02:11:00

阅读数:4496

评论数:12

程序只运行一次并激活原来的程序

我们的程序有时候只允许运行一次,并且最好的情况是,如果程序第二次运行,就激活原来的程序。网上有很多的方法实现程序只运行一次,但对于激活原来的窗口却都不怎么好。关键就在于激活原来的程序,一般的做法是在工程开始时,打开互斥量对象,如果打不开表示程序还没有运行,创建一个互斥量对象;如果打得开表示程序已经...

2005-12-29 01:26:00

阅读数:7445

评论数:8

XML和对象属性互转的基类

本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对象属性的转换即可以,废话少说了,还是看代码了,例子也懒得去写了,相信不会很难看懂的:unit XM...

2005-11-14 19:51:00

阅读数:2411

评论数:0

Delphi对于控件的SuperClassing

Windows内部预定义了一些通用的控件,我们在用这些控件的时候不必再调用RegisterClass注册一个窗口类,只要直接调用CreateWindows,并指定一个预定义的窗口类就可以,比如,我们要创建一个Button,只要用如下形式即可:CreateWindows(.., ‘BUTTON’,....

2005-11-14 19:38:00

阅读数:2860

评论数:0

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