随笔分类 -  delphi

1
【转】DELPHI 线程类
摘要:原文地址:http://yyimen.blog.163.com/blog/static/179784047201211811178223/Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充。 线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多个子线程。当一个进程中用到超过一个线程时,就是所谓的“多线程”。 那么这个所.. 阅读全文
posted @ 2013-08-30 14:49 唐朝t 阅读(478) 评论(0) 推荐(0) 编辑
delphi 集合类型探究
摘要:集合是由具有某些共同特征的元素构成的一个整体。在pascal中,一个集合是由具有同一有序类型的一组数据元素所组成,这一有序类型称为该集合的基类型。 一、集合类型的定义和变量的说明 集合类型的一般形式为: set of 基类型; 基类型可以是任意顺序类型, 而不能是实型或其它构造类型。同时,基类型的数据的序号不得超过255。例如下列说明是合法的:type numbers =set of 0..9; ch=set of char; day=(sun,mon,tue,wed,thu,fri,sat);var s: numbers; c:ch; weekday:day;可以将... 阅读全文
posted @ 2013-08-17 16:54 唐朝t 阅读(6411) 评论(0) 推荐(0) 编辑
【转】Delphi 的RTTI机制浅探
摘要:Delphi 的RTTI机制浅探目 录===============================================================================⊙ DFM 文件与持续机制(persistent)⊙ ReadComponentResFile / WriteComponentResFile 函数⊙ Delphi 持续机制框架简述⊙ 一个 TForm 对象的创建过程⊙ TStream Class 和 TStream.ReadComponent 方法⊙ TReader Class 和 TReader.ReadRootComponent 方法⊙ TRe 阅读全文
posted @ 2013-08-15 14:59 唐朝t 阅读(778) 评论(0) 推荐(0) 编辑
【转】VCL窗口函数注册机制研究手记,兼与MFC比较
摘要:VCL窗口函数注册机制研究手记,兼与MFC比较 By 王捷 cheka@yeah.net (转载请保留此信息) 这个名字起的有些耸人听闻,无他意,只为吸引眼球而已,如果您对下列关键词有兴趣,希望不要错过本文:1. VCL可视组件在内存中的分页式管理;2. 让系统回调类的成员方法3. Delphi 中汇编指令的使用 我们知道Windows平台上的GUI程序都必须遵循Windows的消息响应机制,可以简单概括如下,所有的窗口控件都向系统注册自身的窗口函数,运行期间消息可被指派至特定窗口控件的窗口函数处理。对消息相应机制做这样的概... 阅读全文
posted @ 2013-08-15 14:58 唐朝t 阅读(344) 评论(0) 推荐(0) 编辑
【转】Delphi 的消息机制浅探
摘要:Delphi 的消息机制浅探savetime2k@yahoo.com 2004.1.9我从去年 12 月上旬开始等待李维的《Inside VCL》。我当时的计划是,在这本书的指导下深入学习 Delphi。到了 12 月底,书还没有出来,我不愿再等,开始阅读 VCL 源代码。在读完 TObject、TPersistant 和 TComponent 的代码之后,我发现还是不清楚 Delphi 对象到底是怎样被创建的。于是我查看 Delphi 生成的汇编代码,终于理解了对象创建的整个过程(这里要特别感谢 book523 的帮助)。此后我就开始学习 Delphi VCL 的消息处理机制。自从我写下《. 阅读全文
posted @ 2013-08-15 14:56 唐朝t 阅读(395) 评论(0) 推荐(0) 编辑
delphi通过函数名动态调用函数的方法(方便功能的扩展)
摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TMyCacl = class(TObject) public { Public declarations } function DynamicFun(funName: string; const a, b: integer): integer; published function add(const a, b: inte... 阅读全文
posted @ 2013-07-28 17:54 唐朝t 阅读(4001) 评论(2) 推荐(0) 编辑
【原创】浮点数存储格式图解
摘要:关于IEEE-754标准详细可参考百度百科:http://baike.baidu.com/view/1352525.htm,或者维基百科:http://zh.wikipedia.org/zh-cn/IEEE_754 为便于软件的移植,浮点数的表示形式应该有统一标准(定义)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754标准。该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据二进制的规格化方法,数值的最高位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。IEEE754标准. 阅读全文
posted @ 2012-12-01 15:50 唐朝t 阅读(1342) 评论(0) 推荐(0) 编辑
改进delphi中的RoundTo函数
摘要:delphi 7中自带数值四舍五入函数RoundTo(AVlaue, ADigit)存在一些不确定性情况,并非像帮助或者网络说的四舍六入五凑偶的规则,不信可以随便测试几个数据就会发现与你预期的不一样,比如33.015与33.035,修约2位小数,运行结果却是33.01与33.03。这主要是与浮点数的精度有关(有兴趣可以了解一下浮点数的存储结构,我之前有转载了一篇相关文章),我改进这个问题,较好的解决的前面的问题,同时执行速度较快,用法与RoundTo一样,代码如下:function IsVeryNear1(f: double): boolean;var // 判断给定实数的小数部分是... 阅读全文
posted @ 2012-11-30 20:46 唐朝t 阅读(7732) 评论(0) 推荐(0) 编辑
delphi 7邮件发送程序编写
摘要:delphi 7发送个邮件一般用到TIdSMTP与TIdMessage这两个组件,他们分别在Indy Clients和Indy Misc两个面板组件页内,或者通过菜单 View -> Component List里面直接输入控件名字查找控件。一般的邮件发送用到前两个控件就可以了,但是现在许多邮箱需要通过SSL加密来发送邮件,这样还需要一个控件TIdSSLIOHandlerSocket(Indy I/OHandler 页面)和一个SSL的Dll的支持,ssl dll下载地址:ssllib.rar 或者http://download.csdn.net/detail/webouse/70857 阅读全文
posted @ 2012-10-29 10:49 唐朝t 阅读(3619) 评论(0) 推荐(0) 编辑
【转载】浮点数在内存中的存储格式
摘要:浮点数在内存中的存储格式2010-10-09 11:03:28|分类:C/C++编程基础|字号订阅由一个程序开始int_tmain(intargc,_TCHAR*argv[]){floata=1.0f;//浮点数在内存中是以符号+指数+尾数保存的cout<<(int&)a<<endl;//1.0f在内存中的保存的是0x3f800000,将a地址开始的sizeof(int)个字节当做int类型的输出106535216intb=0x3f800000;cout<<b<<endl;//106535216cout<<(int)a< 阅读全文
posted @ 2012-10-26 14:41 唐朝t 阅读(476) 评论(0) 推荐(0) 编辑
【原创】基于逆波兰式法的数学表达式计算算法举例演示
摘要:基于逆波兰式法的数学表达式计算算法 唐齐时 唐齐时 2 212 2012-05-18T06:19:00Z 2012-05-18T06:32:00Z 2012-05-18T06:32:00Z 1 494 2822 fjjl 23 6 3310 11.9999 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 基于逆波兰式法的数学表达式计算算法我在上一篇文章中给出了计算规则,但没有举例,这里我举一个... 阅读全文
posted @ 2012-05-18 14:30 唐朝t 阅读(2894) 评论(0) 推荐(1) 编辑
DBGrid支持鼠标滚轮滚动的解决办法
摘要:方法一:在窗体添加一个TApplicationEvents组件(在Additional中),然后在它的OnMessage事件中添加如下代码:procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);begin // 当在 DBGrid1 上发生鼠标滚轮事件时 if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam > 0 then // 滚轮上滚 Sen... 阅读全文
posted @ 2012-05-11 23:30 唐朝t 阅读(2038) 评论(0) 推荐(2) 编辑
【原创】delphi 7中TIdTCPClient 组件ReadLn方法的超时参数无效的升级解决办法
摘要:delphi 7自带的Indy是v9.0.10版本的,在此版本中,TIdTCPClient 组件 ReadLn 方法的超时参数无效,在v9.0.18版本中已经解决了这个问题。查看delphi 7中Indy版本的方法:打开delphi 7,在窗口随便放置一个Indy组件,然后再组件上点右键,第一个就是版本信息了。Indy v9.0.18下载地址:http://www.indyproject.org/downloads/indy9.0.18_source.zip升级Indy的方法:1、卸载旧的版本,Component -> Install packages...在Design package 阅读全文
posted @ 2012-05-02 13:13 唐朝t 阅读(2138) 评论(0) 推荐(0) 编辑
【原创】Delphi CRC校验码生成软件(CRC16、CRC32)
摘要:Delphi CRC校验码生成软件(CRC16、CRC32)程序下载地址:CRC_Calc.rar 阅读全文
posted @ 2011-12-08 09:46 唐朝t 阅读(4457) 评论(0) 推荐(1) 编辑
【原创】Delphi实现数学表达式的计算(逆波兰式法)-四则运算解析
摘要:本文主要内容为123 发表于 2011-5-31 00:19:55发表的“逆波兰表达式,北大未名湖站 - 编程技术 - 必度!”帖子 http://www2.pekdo.com/forum.php?mod=viewthread&tid=32&page=1 但帖子中的内容很多不够完善,比如左右单目符号 阅读全文
posted @ 2011-11-03 16:42 唐朝t 阅读(7608) 评论(1) 推荐(2) 编辑
【转】Delphi POS函数中文处理的问题
摘要://delphi漏洞 pos()函数的奇怪现象edit1.Text := intToStr(pos('市',资中市'));//结果=5,正确.edit1.Text := intToStr(pos('市','资兴市'));//结果=2 . -_-?edit1.Text := intToStr(pos('市','湖南省郴州市资兴市'));//结果=11,正确.edit1.Text := intToStr(pos('市','湖南省资兴市郴州市'));//结果=8 . -_-?//以 阅读全文
posted @ 2011-09-24 15:43 唐朝t 阅读(1155) 评论(0) 推荐(0) 编辑
Delphi DBGrid显示颜色应用技巧 [转]
摘要:在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一。但是 DBGrid 缺省的外观未免显得单调和缺乏创意。其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观的目的。通过编程,我们可以改变 DBGrid 的表头、网格、网格线的前景色和背景色,以及相关的字体的大小和风格。 以下的示例程序演示了对 DBGrid 各属性的设置,使 Delphi 显示的表格就像网页中的表格一样漂亮美观。 示例程序的运行: 在 Form1 上放置 DBGrid1、Query1、DataSource1 三个数据库组件,设置相关的属性,使 DBGrid1 能显示表中的数据。然... 阅读全文
posted @ 2011-09-22 18:18 唐朝t 阅读(3643) 评论(0) 推荐(0) 编辑
IdTCPClient和IdTCPServer主要属性(转载)
摘要:IdTCPClient属性1 : IOHandler 如果有相应的输入/输出操作,那么IOHandler相对应的组件或接口将提供一个虚拟/抽象的输入/输出接口给相应的网络连接2 : Intercept 如果有一个网络连接正在使用,那么Intercept 提供的组件或接口将可以拦截相应的网络数据流中的数据3 : BoundIP 指定使用IdTCPClient组件的计算机系统的IP地址,也就是说,其中是空白那么什么样的计算机都可以使用,但如果指定的IP地址为239.126.12.2,那么就只有IP地址为239.126.12.2的计算机可以使用它.4 : BoundPort 网络端口的概念,指定使用 阅读全文
posted @ 2011-09-18 22:17 唐朝t 阅读(613) 评论(0) 推荐(1) 编辑
[转]Delphi 7中用Indy组件开发Socket应用程序
摘要:笔者在前一段的工作中,需要开发一套简单的网络数据传输程序。由于平时常用Delphi做点开发,故此次也不例外。Delphi 7中带有两套TCP Socket组件:Indy Socket组件(IdTCPClient和IdTCPServer)和Delphi原生的TCP Socket组件(ClientSocket和ServerSocket)。 但是,Borland已宣称ClientSocket和ServerSocket组件即将被废弃,建议用相应的Indy组件来代替。因此,笔者使用了Indy。本文在对Indy进行简要介绍的基础上,创建了一组简单的TCP Socket数据传输应用来演示了Indy的使用方. 阅读全文
posted @ 2011-09-18 18:28 唐朝t 阅读(6335) 评论(0) 推荐(1) 编辑
Delphi 调用系统中的计算器、记事本、画图软件方法
摘要:1.直接调用 前面uses加 ShellAPIShellExecute(Handle, 'open', PChar('calc.exe'), nil, nil, SW_SHOW);2.直接调用 前面加StdCtrlsWinExec('calc.exe',SW_SHOWNORMAL);3.以此类推:调用记事本WinExec('notepad.exe',1); 用绝对目录调用:winexec('c:\windows\calc.exe');附件在系统中的目录:win2000举例, 计算器是 C:\WINNT\System 阅读全文
posted @ 2011-09-18 14:25 唐朝t 阅读(2234) 评论(0) 推荐(0) 编辑

1