![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
delphi
不停歇的步伐
这个作者很懒,什么都没留下…
展开
-
variant操作
function DataSetToVar(ADataSet: TDataSet; Recs: Integer): olevariant; var DPW: TDataPacketWriter; V: OleVariant; BK: TBookMarkStr; begin if ADataSet try DPW := TDataPacketWriter.Create; DPW.Packet转载 2009-02-19 23:43:00 · 846 阅读 · 0 评论 -
TTimer内部工作原理
<br />如果使用传统的SDK开发方式,那么,创建和销毁一个定时器有两个API可以使用:<br />UINT_PTR SetTimer(<br /> HWND hWnd, // handle to window, 用来接收WM_TIMER消息的窗体句柄<br /> UINT_PTR nIDEvent, // timer identifier, 定时器的ID<br /> UINT uElapse, // time-out value, 定时器的超转载 2011-01-25 17:24:00 · 4772 阅读 · 0 评论 -
Delphi 如何使用资源文件
<br />要开发一个多语言版本的程序, 在繁体操作系统中开发, 应用程序名称为: 快递服务管理系统, 在繁体操作系统中运行时, 程序名称显示正常, 但在 简体操作系统中显示乱码. 在开发环境中, 将用Word转换为 简体字的 快递服务管理系统 赋值给 Application.Title 没效. 后来使用字符串资源文件来解决. <br /><br /> 1. 首先新建一个 1.txt文件, 在里面输入你需要使用字符, 格式为: <br /><br /> stringtable <br /><br />转载 2011-02-18 15:14:00 · 847 阅读 · 0 评论 -
Delphi中的容器类
<br />从Delphi 5开始VCL中增加了一个新的Contnrs单元,单元中定义了8个新的类,全部都是基于标准的TList 类。 <br /> TList 类<br /> TList 类实际上就是一个可以存储指针的容器类,提供了一系列的方法和属性来添加,删除,重排,定位,存取和排序容器中的类,它是基于数组的机制来实现的容器,比较类似于C++中的Vector和Java中的ArrayList,TList 经常用来保存一组对象列表,基于数组实现的机制使得用下标存取容器中的对象非常快,但是随着容器中的对象转载 2011-03-10 00:46:00 · 2761 阅读 · 1 评论 -
用Delphi实现观察者模式(Observer模式)
<br />有一段时间我对IE编程非常感兴趣,于是就在Yahoo加入了一个IE编程的兴趣小组,只要有人在兴趣小组中提出或者回答了一个问题,发布的信息就会发送给所有兴趣小组的注册用户,这种模式实际上就是发布-订阅模式,又称观察者模式。<br /> <br />观察者模式中有两个角色,其中一个是目标,另外一个是观察者,对于兴趣小组来说,注册用户就是观察者,而兴趣小组本身是目标。兴趣小组必须提供注册的机制,这样兴趣小组才能知道用户的邮件地址,可以维护一个订户的邮件列表,能在信息更新时向订户发送变更通知。同时兴趣小转载 2011-03-10 01:07:00 · 2687 阅读 · 0 评论 -
Delphi根据字符串实例化对象
<br />我们可以通过ClassRegistry单元的TClassRegistry类很轻松的根据字符串创建出对象。<br />下面是该类几个主要函数的说明:Code<br />// 获取TClassRegistry自身的单例引用<br />class function GetClassRegistry: TClassRegistry;<br />// 注册需要动态创建的类<br />procedure RegisterClass(ClassName: UnicodeString; ObjectClass:转载 2011-03-16 10:11:00 · 2970 阅读 · 1 评论 -
Delphi 12种大小写转换的方法
第一种方法有多种方法,放在下面,大家可以依次去看。好久没写笔记了。呵呵。function TPrintfrm.NumToChar(n: Real): wideString; //可以到万亿,并可随便扩大constcNum: WideString = '零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分'; cCha: array[0..1, 0..11] of string = (('零仟','零佰','零拾','零零零','零零', '零亿','零万','零元','亿转载 2011-03-18 09:45:00 · 4491 阅读 · 0 评论 -
用TIdHTTP多线程下载
<br />unit IndyDownLoadFile;<br /><br />interface<br /><br />uses<br />Windows, SysUtils, Classes, IdComponent, IdHTTP;<br /><br />type<br />TSubThReturnDataEvent = procedure(StartPos, WorkCount: Integer; Data: Pointer; var Stop: Boolean) of object;<br />T转载 2011-05-24 14:14:00 · 2466 阅读 · 2 评论 -
使用FastMM4结合View CPU避免内存泄漏
<br />内存泄漏经常出现在本地代码中,特别是多线程和发生异常的情况下,这时候在delphi环境下,FastMM4就特别有用。 <br /><br />FastMM4是非常高效可靠的内存管理器,用来替代久久不更新的borland内存管理器是最好的。地址:http://sourceforge.net/projects/fastmm/<br /><br />调试过程如下: <br /><br />1.打开FastMM4的调试功能,首先在自己的project里把FastMM4放在最前面,例如: <br /><b转载 2011-04-06 09:37:00 · 956 阅读 · 0 评论 -
Delphi原创算法:动态创建30个按钮,每行6个共5行,顺序排列,显示在ScrollBox上
procedure TForm1.Button1Click(Sender: TObject);constiHtoH = 20; //行间距iWtoW = 10; //列间距iPerLine = 6;//每行个数iWidth = 80; //按钮宽度varI : integer;begin//算法:动态创建30个按钮,每行6个共5行,顺序排列,显示在ScrollBox上for I := 1 to转载 2011-06-03 17:54:00 · 5846 阅读 · 0 评论 -
Delta与XML相互转换
大家都知道TClientDataSet的Delta属性保存数据集的变化,但是Delta是OleVariant类型的属性,这样如果用Delphi写Webservice,就有需要把它转成XML,特别是其他语言也要用这个Webservice的时候,因为如果Delta能和XML相互转换,Delta包的结构就是透明的了。而TClientDataSet却没有提供DeltaXML这样的属性,之前在网上找了一下,转载 2011-06-07 23:32:00 · 1121 阅读 · 0 评论 -
用delphi写多屏幕程序
别现在有些POS机是双屏幕的(比如卡西瓦POS机),一个屏幕可以当顾客显示屏用,当闲时也可以显示一些广告。其实用delphi写双屏幕的程序是比较简单的,Screen.MonitorCount就是当前系统屏幕的数量,TForm也有与屏幕相关的属性,比如DefaluMonitor,不过想设一个窗体显示在哪个屏幕上好象没有属性(可能我没找到),不过研究VCL代码发现如何把一个窗体显示在某个屏幕上(可以看转载 2011-06-07 23:45:00 · 6372 阅读 · 0 评论 -
.Net 自定义应用程序配置
引言几乎所有的应用程序都离不开配置,有时候我们会将配置信息存在数据库中(例如大家可能常会见到名为Config这样的表);更多时候,我们会将配置写在Web.config或者App.Config中。通过将参数写在配置文件(表)中,我们的程序将变得更加灵活,只要对参数进行修改,再由程序中的某段代码去读取相应的值就可以了。而如果直接将配置值写在程序中,当配置需要改变时,则只能通过修改代码来完成,此时往转载 2011-06-29 17:54:00 · 669 阅读 · 0 评论 -
Delphi中关于 array of const 变体开放数组参数
<br />变体开放数组参数 <br /> <br /> <br /> 变体开发数组参数允许向单个过程或函数传递不同类型表达式的数组。要定义含有变体开放数组参数的例程,需要指定array of const作为参数类型。如, <br /> <br /> procedure DoSomething(A: array of const); <br /> <br /> 这里声明了一个叫做DoSomething的转载 2011-05-06 09:47:00 · 2640 阅读 · 0 评论 -
通过WebBrowser中的脚本调用Delphi自定义的方法(How to call Delphi code from scripts running in a TWebBrowser)
<br />http://www.delphidabbler.com/articles?article=22&part=1转载 2011-05-12 17:05:00 · 2597 阅读 · 0 评论 -
利用浏览器实现程序界面与实现的分离
关键字 WebBrowser,IDocHostUIHandler,GetExternal1 引言在用Delphi、Visual Basic等可视化快速开发工具编写Windows应用程序时,常会遇到这样几个问题:1) 希望程序界面美观。在Delphi中,开发人员通常使用各种控件来实转载 2011-07-14 10:27:01 · 1175 阅读 · 1 评论 -
Delphi如何自定义IE接口(How to customise the TWebBrowser user interface)
http://www.delphidabbler.com/articles?article=18&part=1转载 2011-07-14 11:24:55 · 681 阅读 · 0 评论 -
devexpress 动态调用皮肤
<br />dxSkinController可以在运行时动态调入皮肤,不用在设计期Use一大串文件,把要用的皮肤用安装程序自带的Skin Editor编辑一个SkinRes文件,然后在程序中动态调入就可以了。<br /><br />uses dxSkinsDefaultPainters;<br /><br />procedure TForm1.FormCreate(Sender: TObject);<br />begin<br />cxComboBox1.Properties.Items.Clear;<br转载 2010-11-06 15:09:00 · 1489 阅读 · 0 评论 -
DataSet动态生成字段
<br />procedure TForm1.Button1Click(Sender: TObject);<br />var<br /> j: integer;<br /> t: tstringfield;<br />begin<br /> query2.open;<br /> Query1.Close;<br /> query1.fielddefs.clear;<br /> for j := 0 to query2.FieldDefs.Count - 1 do<br /> with qu原创 2010-12-14 10:14:00 · 1604 阅读 · 0 评论 -
文件/流的加密解密方法
<br />(*<br />* 单元说明: 文件/流的加密解密方法(For Delphi 6-7)<br />*<br />* 软件来源: http://www.go-neumann.com<br />* http://www.inbytes.net<br />*<br />* 作 者: neumann@163.com<br />*<br />* 使用说明: 此文件的代码可以直接编译使用,<br />* 您可以根据需要编写自己的加密/解密代码.<br />*<b转载 2010-10-15 15:55:00 · 847 阅读 · 0 评论 -
Delphi/Free pascal 终极流化技术
流化技术,有些编程语言中也称为序列化技术,亦即把一个对象的状态保存到一个文件中,也可以逆向从文件中读取内容以初始化这个对象。 Object Pascal语法提供不完全流化的能力,仅支持对Published属性的流化/反流化操作,对private、public及protected属性则无能为力。 在Delphi/Free pascal的VCL类库体系中,处于金字塔次顶层的TPersi转载 2009-02-18 10:23:00 · 2275 阅读 · 0 评论 -
类对象的流式转化
类对象的流式转化TVirtualStringTree的SaveToStream与LoadFromStream 我们已经知道,使用对象的SaveToStream方法,能把对象的内容写到stream中,而使用LoadFromStream方法,能把对象的内容从stream中恢复。不过,这里有些地方,我们可能会忽略。 有一点需要注意,如果想把对象的内容直接保存到stream中,这里转载 2009-02-18 10:26:00 · 1819 阅读 · 0 评论 -
Delphi中Interface接口的使用方法
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type //定义接口如果接口独立成一个文件,则在应用程序中和实现程序中都要引用该接口文件; ICar = interface (IInterface)转载 2009-03-13 12:22:00 · 1182 阅读 · 0 评论 -
Delphi 的字符及字符串 - Char、AnsiChar、WideChar、PChar、PAnsiChar、PWideChar
Delphi有三种类型的字符:AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉。WideChar这是2字节的Unicode字符。Char在目前相当于AnsiChar,但在Delphi以后版本中相当于WideChar.记住因为一个字符在长度上并不表示一个字节,所以不能在应用程序中对字符长度进行硬编码,而应该使用Sizeof()函数。注意Sizeof()标准函数返回转载 2009-03-13 12:37:00 · 7799 阅读 · 0 评论 -
TWebbrowser读写HTML文档
华中师范大学 卢小海 ---- 为了实现在自己的程序中显示HTML文档,我们一般采用IE(Internet Explorer本文中简称为IE)发行时附带的一个ActiveX控件TWebBrowser。这个控件使用和IE相同的内核,功能强大,并从Delphi5开始,正式得到Inprise公司的支持,取代了原来的那个THTML控件,成为Delphi中显示HTML文档的首转载 2009-09-11 10:51:00 · 1782 阅读 · 0 评论 -
WINDOWS的内存管理【虚拟内存管理】(一)
WINDOWS的内存管理【虚拟内存管理】(一)基本概念【摘录】 每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB,因为32位指针可以拥有从0x000000000至0xFFFFFFFF之间的任何一个值。这使得一个指针能够拥有4 294 967 296个值中的一个值,它覆盖了一个进程的4GB虚拟空间的范围。这是相当大的一个范围。由于转载 2009-09-14 17:09:00 · 629 阅读 · 0 评论 -
DELPHI读取网页源文件和获取字符串
(转)说到网页采集,通常大家以为到网上偷数据,然后把到收集到的数据挂到自己网上去。其实也可以将采集到的数据做为公司的参考,或把收集的数据跟自己公司的业务做对比等。 目前网页采集多为3P代码为多(3P即ASP、PHP 、JSP)。用得最有代表的就动易科技公司BBS中新闻采集系统,和网上流传的新浪新闻采集系统等都是用ASP程序来使用,但速度从理论上来说不是很好。如果尝试用其它软件的多线程采集是不是转载 2009-10-22 11:39:00 · 1389 阅读 · 0 评论 -
怎样使用Map文件进行查错
首先必须生成程序的 MAP 文件。什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。好吧,既然 MAP 文件如此神奇,那么我们应该如何生成它呢?在 VC 中,我们可以按下 Alt+F7 ,打开“Project Settings”选项页,选转载 2009-10-28 18:17:00 · 433 阅读 · 0 评论 -
简单的Delphi三层程序开发
一年前开发了一个MIDAS的程序,最近修改服务端,可是这个服务无法注册,最后终于找到了解决办法,这个相关文章如下:(算是备份吧) (一)MIDAS是什么? Delphi中MIDAS到底是什么呢?和他相关组件是什么呢? MIDAS(Multitiered Distributed Application Services)多层分布式应用服务。 Delphi所提出的Multi-Tier结转载 2009-11-18 08:55:00 · 705 阅读 · 0 评论 -
递归加载树形列表的过程(函数)
//采用递归方法,D7编译调试通过。 //数据采用ADOQuery读取,并将数据暂存在一个动态数组中,树形列表控件为TreeView。 procedure TForm1.LoadTreeInfo;type TInfo = record ID, //代码 Name, //名称 SuperID //上级代码转载 2010-03-23 15:07:00 · 980 阅读 · 0 评论 -
delphi 三层开发经验汇总
delphi很早就已经可以进行三层的开发了. 但一直到现在, 网上这方面的东西太少 了. 要么太老, 甚至不完全正确. 例如:如何进行多表更新(提交), 很多回复还是说用ADOConnection的事务, (如果要同时更新SQL SERVER和Oracle数据库的表怎么办).当然也有说用SetComplete, SetAbort的. 但说的很简单, 其中的注意事项又是什么呢. 还有的推荐看李转载 2010-04-13 22:45:00 · 5713 阅读 · 0 评论 -
Delphi下的COM编程
Delphi通过向导可以非常迅速和方便的直接建立实现COM对象的代码,但是整个COM实现的过程被完全的封装,甚至没有VCL那么结构清晰可见。一个没有C++下COM开发经验甚至没有接触过COM开发的Delphi程序员,也能够很容易的按照教程设计一个接口,但是,恐怕深入一想,连生成的代码代表何种意义,哪些能够定制都不清楚。前几期 “DELPHI下的COM编程技术”一文已经初步介绍了COM的一些基本概念转载 2010-04-10 12:07:00 · 1228 阅读 · 0 评论 -
Delphi 下的RTTI
目录===============================================================================⊙ RTTI 简介⊙ 类(class) 和 VMT 的关系⊙ 类(class)、类的类(class of class)、类变量(class variable) 的关系⊙ TObject.ClassType 和 TObject.ClassI转载 2010-04-25 18:11:00 · 899 阅读 · 0 评论 -
Delphi的IDHTTP的基本用法
<br /> <br />一、IDHTTP的基本用法<br /> <br />IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快、更节约资源,缺点是需要手动维护cook,连接等<br />IDHttp的创建,需要引入IDHttp<br />procedure InitHttp();<br />begin<br /> http := TIdHTTP.Create(nil);<br /> http.ReadTimeout := 30000;<br />转载 2010-09-20 11:22:00 · 1099 阅读 · 0 评论 -
API之文件处理函数
<br />文档标题:API之文件处理函数 作者: 九头鸟<br /><br />关 键 字:API之文件处理函数<br /><br />CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 <br />CompareFileTime 对比两个文件的时间 <br />CopyFile 复制文件 <br />CreateDirectory 创建一个新目录 <br />CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 <br />Crea转载 2010-10-07 15:43:00 · 447 阅读 · 0 评论 -
Delphi学习-事件机制
Delphi主要是一个RAD的开发工具,在开发速度上,那是相当的快速的,这都是归功于他的组件了,然而Delphi的那么多组件结合了之后如何工作呢?这里就是今天要说的了,那就是事件机制,众所周知Windows下各个Win32程序的运作都是通过消息来驱动的,而Delphi则将各种各样的消息包装,于是成为了事件,比如你想写一个按钮,让用户点这个按钮的时候,弹出一个对话框,那么我们就可以为这个按钮指定一个转载 2011-04-28 11:50:00 · 2621 阅读 · 0 评论