Delphi
chenyq2008
这个作者很懒,什么都没留下…
展开
-
delphi托盘类
托盘区就是在windows的状态栏下方显示时钟、输入法状态的地方,要把你的程序显示在托盘区:下面是一个托盘类,只要把下面粘贴到文本文件中,改成TrayIcon.pas,使用时uses TrayIcon就可以了。先声明一个全局变量:var tray:TTrayNotifyIcon;然后在窗体的OnCreate事件中:tray:=TTrayNotifyIcon.Create(self);//将窗体创建转载 2008-01-21 13:39:00 · 816 阅读 · 0 评论 -
对象内存的分配及回收
编译器在为对象分配内存时,所提供的支持就是在调用构造函数之前插入这几行汇编代码:test dl, dljz +$08add esp, -$10call @ClassCreate // 注意这行代码以上代码的最后一行代码调用的是system.pas文件的第8949行的_ClassCreate函数(以Delphi 6为准),该函数具体为每个对象分配合适的内存。内存分配完成后是调用类的构造函数以初始化数转载 2008-12-21 12:05:00 · 638 阅读 · 0 评论 -
Delphi的消息机制探索
第一部分:流程概述 这是一个很大的题目,本人才疏学浅难免有纰漏之处,还请大家多多见谅! 虽然这篇文章是讨论Delphi的消息机制,但是如果不知道Windows的程序是如何运转的,就根本无从下手,所以先费点口沫,让我们回顾一下Windows的消息机制。 让我们先从一张图开始: 这张图大概说明了Window的消息处理流转载 2013-05-22 17:29:56 · 1002 阅读 · 0 评论 -
TPersistent类
TPersistent类来源TObject类,在Delphi中的定义如下:{$M+} TPersistent = class(TObject) private procedure AssignError(Source: TPersistent); protected procedure AssignTo(Dest: TPersistent); virtua转载 2013-05-24 12:44:59 · 1351 阅读 · 0 评论 -
Delphi中停靠技术的实现
随着软件技术的不断进步,软件界面也越来越美观,操作也越来越方便。综观市面上比较专业的各种软件,我们会发现大部分都提供窗体停靠的功能,特别象工具软件,基本上都或多或少有停靠功能。自然,Delphi也支持停靠,而且她和VCL紧密结合,对于广大的Delphi程序员来说更是一大福音。让我们省去枯燥的编码时间。把注意力集中在核心程序的构思上。 先让我们来复习一下VCL的结构,在TWinCon转载 2013-05-27 23:08:12 · 1781 阅读 · 0 评论 -
ControlState和ControlStyle属性详解
ControlState属性用来指明运行的每一个时刻控件的状态。属性属于TControlState类型,这个类型是一个标志集,它可以被设置成为以下值的组合形式。ControlState 属性 对应对象:TControl 声明:TControlState = set of (csLButtonDown, csClicked, csPalette, csReadingState, cs转载 2013-05-28 17:55:57 · 2234 阅读 · 0 评论 -
Delphi VCL中DragDrop功能的底层实现
前段时间在论坛里看了一篇关于剖析VCL结构的文件,其中不少高手的开怀畅谈让小辈们心里感觉非常的痛快!看完余又觉得不能光看,也该将自己的心得拿出来与大家分享,于是就边夜翻看VCL源码,终于将VCL如何实现DragDrop功能的过程弄个“基本明白”,其中可能会有不当之处,再加上小弟的文学水平也只是初中毕业,有些地方也许会表达不当,但其意思也基本上八九不离十了,故也请大家开怀畅言、批评指正,都是为了进步转载 2013-06-10 17:31:17 · 2726 阅读 · 0 评论 -
VCL的命令消息(一)窗口控件的命令消息
VCL的命令消息Windows中的消息有三种:标准的窗口消息,命令消息,控件通知消息,再加上我们自定义的消息,所以Windows程序我们要处理四种消息,幸运的我们常用的开发工具都带了自己的Framwork,Visual C++中用的是MFC,Delphi和BCB用的VCL,这些Framwork都有一套自己的消息处理机制,它们处理前面三种系统已经定义的消息,所以我们要做的就是处理自己定义的消息。转载 2013-06-05 10:00:43 · 1527 阅读 · 0 评论 -
Delphi 的消息机制浅探(2)
补充知识:TWndMethod 概述===============================================================================写这段基础知识是因为我在阅读 MakeObjectInstance(MainWndProc) 这句时不知道究竟传递了什么东西给 MakeObjectInstance。弄清楚了 TWndMethod转载 2013-06-05 15:41:50 · 2208 阅读 · 0 评论 -
Delphi 的消息机制浅探
我从去年 12 月上旬开始等待李维的《Inside VCL》。我当时的计划是,在这本书的指导下深入学习 Delphi。到了 12 月底,书还没有出来,我不愿再等,开始阅读 VCL 源代码。在读完 TObject、TPersistant 和 TComponent 的代码之后,我发现还是不清楚 Delphi 对象到底是怎样被创建的。于是我查看 Delphi 生成的汇编代码,终于理解了对象创建的整个转载 2013-06-05 15:31:28 · 1525 阅读 · 0 评论 -
Delphi 的持续机制浅探
目 录===============================================================================⊙ DFM 文件与持续机制(persistent)⊙ ReadComponentResFile / WriteComponentResFile 函数⊙ Delphi 持续机制框架简述转载 2013-06-05 23:18:23 · 2002 阅读 · 0 评论 -
delphi的组件读写机制
Delphi的组件读写机制(一)一、流式对象(Stream)和读写对象(Filer)的介绍 在面向对象程序设计中,对象式数据管理占有很重要的地位。在Delphi中,对对象式数据管理的支持方式是其一大特色。 Delphi是一个面向对象的可视化设计与面向对象的语言相结合的集成开发环境。Delphi的核心是组件。组件是对象的一种。Delphi应用程序完全是由组件来构造的,因此开发高性能转载 2013-06-05 23:23:15 · 879 阅读 · 0 评论 -
Delphi 启动流程
Project.DPRInitExeInitiateModuleStartExec SetExceptionHandler InitUnits sysInit System FPUMaskInit FPUInit 系统相关Get转载 2013-06-07 13:27:52 · 1515 阅读 · 0 评论 -
理解Delphi中的字符串string
delphi使用的object pascal对字符串类型提供了内建支持一种简单的shortstring是为兼容turbo pascal等老版本而保留的,具体实现是一个最大256字节的数组,第0个字节保存字符串的长度,然后依次是1,2...n结尾没有#0标识,因此老一点讲pascal的书里面都是直接用str[0]访问字符串str的长度的……此类型已基本上被遗弃新的所谓longstring类型是从de转载 2008-09-27 22:19:00 · 5782 阅读 · 0 评论 -
delphi怎样读写CMOS内存
cmos内存的读写一、CMOS内存信息详解 一般的PC/AT、286、386、486等微机均配有CMOS芯片,CMOS&127;芯片包含了一个实时钟 和64个字节的CMOS内存。在CMOS内存中,0-0DH为实时钟的有关信息,0E-&127;3FH包含 计算机的硬件配置信息,如常规内存的大小、扩展内存的大小、&127;软盘的类型、固定 盘的类型及其物理参数、显示器的类型等,转载 2014-10-28 15:50:46 · 969 阅读 · 0 评论 -
Delphi中的几种布尔类型详解
Delphi中预定义的布尔类型有四种:Boolean ,ByteBool,WordBool,LongBool。其中,Boolean 类型是首选布尔类型,其余三种是为其它编程语言和Windows 环境提供兼容性支持。这些布尔类型在使用上大同小异,但如果混淆使用将可能会有意外结果。 现做简单辨析供大家参考。 一、从资源占用的角度进行比较 一项Boolean 类转载 2014-10-28 15:45:21 · 4225 阅读 · 0 评论 -
在 DELPHI 中 procedure 型变量与 method 型变量的区别
Procedure型变量: 在DELPHI中,函数、过程的地址可以赋给一个特殊类型的变量,变量可用如下方式声明: var p : procedure(num:integer); //过程 或: var f : function(num:integer):integer; //函数 也可定义一个过程(或函数)类型,再定义该类型的变量,如: type TMyProc = Procedure(num:i转载 2008-11-29 11:21:00 · 1626 阅读 · 0 评论 -
也谈VCL中DragDrop功能的底层实现
前段时间在论坛里看了一篇关于剖析VCL结构的文件,其中不少高手的开怀畅谈让小辈们心里感觉非常的痛快!看完余又觉得不能光看,也该将自己的心得拿出来与大家分享,于是就边夜翻看VCL源码,终于将VCL如何实现DragDrop功能的过程弄个“基本明白”,其中可能会有不当之处,再加上小弟的文学水平也只是初中毕业,有些地方也许会表达不当,但其意思也基本上八九不离十了,故也请大家开怀畅言、批评指正,都是为了进步转载 2009-01-13 23:07:00 · 725 阅读 · 0 评论 -
使用Delphi快速开发ActiveX控件
ActiveX控件也就是一般所说的OCX控件,它是ActiveX技术的一部分。ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32位应用编程接口(Win32 API)和组件对象模型的一系列扩充和增强,目标是把计算机桌面环境与因特网环境集成起来,同时保护在Windows技术中现有的开发投资。微软的ActiveX技术根本上就是修改过的OCX技术,使它能够跨越Inter转载 2008-01-30 10:42:00 · 3072 阅读 · 1 评论 -
Delphi继承、属性、重载
1. 继承 类名称 = class(父类名称) public 公共类元素> private私有类元素> protected保护类元素> published 可显类元素> End;²转载 2008-01-30 22:47:00 · 1530 阅读 · 0 评论 -
Delphi中的事件处理过程
Delphi的事件是属性的一种特别类型,事件处理过程系由windows捕获消息再将消息封装成事件的过程。如下是以 OnMouseDowng事件为例,说明事件的执行过程。以下是在controls.pas里的代码: //定义事件的方法指针,TMouseEvent 是一种鼠标事件类型,是过程指针。TMouseEvent = procedure(Sender: TObject; Button:原创 2007-12-15 10:48:00 · 1379 阅读 · 0 评论 -
Delphi第三方控件安装卸载指南
由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组件的安装方法介绍一下。 1 只有一个DCU文件的组件。DCU文件是编译好的单元文件,这样的组件是作者不想把源码公布。一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会出现错误。也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组件就不能再使用了,当然有的作者转载 2007-12-18 18:17:00 · 668 阅读 · 0 评论 -
Delphi中读取INI文件
INI文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以可视化的编程一族,如VB、VC、VFP、Delphi等都提供了读写INI文件的方法,其中Delphi中操作INI文件,最为简洁,这是因为Delphi提供了一个TInifile类,使我们可以非常灵活的处理INI文件 一.INI文件的结构 [小节名]ini文件转载 2007-12-18 16:57:00 · 1128 阅读 · 0 评论 -
DELPHI中完成端口(IOCP)的简单分析(1)
用DELPHI开发网络代码已经有一段时间了!我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IOCP讲的清楚的就更少了。在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助。首先我们来了解一些在使用IOCP的时候需要使用的一些结构!(1):单IO数据结构 LPVOID = Pointer; LPPE转载 2008-03-25 17:06:00 · 1578 阅读 · 0 评论 -
DELPHI中完成端口(IOCP)的简单分析(2)
今天我写一下关于DELPHI编写完成端口(IOCP)的工作者线程中的东西。希望各位能提出批评意见。上次我写了关于常见IOCP的代码,对于IOCP来说,接受到客户端发送过来和自己发送出去的数据都是从工作者线程中得到。代码和解释如下:function ServerWorkerThread(CompletionPortID:Pointer):Integer;stdcall;begin Complet转载 2008-03-25 17:13:00 · 2066 阅读 · 0 评论 -
DELPHI中完成端口(IOCP)的简单分析(3)
最近太忙,所以没有机会来写IOCP的后续文章。今天好不容易有了时间来写IOCP的粘包处理问题。TCP数据粘包的产生原因在于TCP是一种流协议。在以太网中一个TCP的数据包长度是1500位。其中20位的IP包头,20位的TCP包头,其余的1460都是我们可以发送的数据。在数据发送的时候,我们发送的数据长度有可能比1460短,这样在TCP来说它还是以一个数据包来发送。从而降低了网络的利用率。所以T转载 2008-03-25 17:16:00 · 1362 阅读 · 0 评论 -
DELPHI中完成端口(IOCP)的简单分析(4)
在我以前写的文章中,一直说的是如何接收数据。但是对于如何发送数据却一点也没有提到。因为从代码量上来说接收的代码要比发送多很多。今天我就来写一下如何使用IOCP发送数据。 function TNetControl.SendSpecifyData(const Socket: TSocket; Data: array of char; DataLen: Integer): Boolean; con转载 2008-03-25 17:20:00 · 1563 阅读 · 0 评论 -
Delphi 中把文本文件装入资源文件中
怎么把动画文件(avi)、位图文件(bitmap)、光标文件(cursor)、图标文件(icon)、声音文件(wave)和字符串等装入 res 资源文件,有关文章已经很多了(参看:http://www.why100000.com/_articles/index.asp?tab=tabDelphi&remark=计算机语言-Delphi)。但是怎么把文本文件也装入资源文件中,资料并不多转载 2008-01-14 23:00:00 · 824 阅读 · 0 评论 -
Delphi中TXMLDocument控件的用法
Delphi中对XML文件的解析做的很好,比直接使用MS的MSXML2_TLB中的接口要方便很多,现称述于下面。 在讲之前先给出一个XML实例,在讲某些部分是要结合实例比较容易理解。1 文档版本信息, 注释格式同HTML-->2 3 江苏网商软件”/>4 5 太阳" sex=”男” age="24" duty="软件工程师"/>6 月亮" s原创 2008-01-15 17:04:00 · 3381 阅读 · 0 评论 -
Listview中实现点击栏目标题排序
请看下面的代码:listview的columns属性加4个列项,viewstyle属性设为vsReport,smallimage属性对应imagelist。imagelist加载图标。query1对应与parts.db表。 这段代码能实现升序排列,降序你稍作改动即可。如果是按字段数据类型排序则可用sql语句实现。另外这段代码可实现响应双击第一列下的图标。 unit Unit1; interfa原创 2008-01-17 10:32:00 · 1320 阅读 · 0 评论 -
Delphi编写soap服务器与客户端程序
使用三层结构开发客户机、服务器软件已成为c/s系统中的主流;下面是自己在开发系统中的一些体会;本文已delphi7(windows)或kylix3(linux9)为环境描述:1、编写服务器程序首先,看看soap服务器的建立,在delphi7中的新建栏目中,选择“ WebServices”如下图,选择“Soap Server Application”点击“ok”,开始选择创建服务程序的类型:ISAP转载 2008-04-19 22:13:00 · 6219 阅读 · 0 评论 -
delphi变量内存分配与释放
全局的非指针类型,声明后自动分配内存,并初始化值局部的非指针类型,声明后自动分配内存,不初始化值,值不确定(取决与别的程序对这块内存的操作)全局的指针类型,声明后不自动分配内存,值为nil局部的指针类型,声明后不自动分配内存,但会随机指向一个地址,所以地址不为nil应用程序可用的内存区分三类:全局变量区(存放全局变量)、栈(Stack)、堆(Heap)。应原创 2008-09-27 23:20:00 · 3815 阅读 · 0 评论 -
关于继承的方式测试
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TBase=class public function AAA:string; function BBB:string;virtu原创 2008-10-06 09:59:00 · 633 阅读 · 0 评论 -
Delphi动态数组介绍
从 Delphi4起,开始了内建各种类型的动态数组支持。但是,对我们来说动态数组支持似乎做的不够彻底,因为Delphi竟然连删除、插入、移动连续元素的函数都没有提供,让人使用起来总觉得不够爽!!! J 。作为一名程序员,我们当然要有自己解决问题的能力,下面就让我们简单介绍一下Delphi 下的动态数组。 在Delphi中,数组类型有静态数组(a : array[0..1024] o原创 2008-09-27 11:40:00 · 9868 阅读 · 2 评论