随笔分类 -  Delphi心得

摘要:(注:本篇的原理部分均摘自罗云彬大侠翻译的驱动开发教程) 在前面的两篇教程中我们写了三个玩具驱动程序,为什么说是玩具驱动呢?因为它们确确实实是驱动程序,而且也能完成一些有趣的功能,但是它们都不完整,没有同用户交流的功能,这一篇就让我们来完成一个简单的全功能驱动程序。 在写程序之前,我们有必要了解一些基础知识。 在用户模式下,我们可以通过访问某个地址来直接调用dll中的函数... 阅读全文
posted @ 2008-04-14 17:17 sonicit 阅读(1378) 评论(0) 推荐(0)
摘要:上篇教程主要是讲解了用Delphi开发Windows驱动程序需要解决的一些技术上的问题,虽然啰嗦了一大堆,也不知道讲清楚了没有^_^。本篇我们开始讲述用Delphi构建驱动开发环境。 用Delphi开发驱动程序所必须的工具:  Dcc32.exe – Delphi编译器,我用的是Delphi 2007的dcc32  Omf2d -- Delphi目标文件转换工具  Link.exe... 阅读全文
posted @ 2008-04-14 16:53 sonicit 阅读(1435) 评论(0) 推荐(0)
摘要:Delphi能不能开发Windows的驱动程序(这里的驱动程序当然不是指VxD了^_^)一直是广大Delphi fans关注的问题。姑且先不说能或者不能,我们先来看看用Delphi开发驱动程序需要解决哪些技术上问题。 Delphi的链接器是无法生成Windows内核模式程序的,因此用delphi无法直接生成驱动程序。M$的链接器是可以生成Windows内核模式程序的,那么是否可以用Delphi... 阅读全文
posted @ 2008-04-14 16:46 sonicit 阅读(1993) 评论(0) 推荐(0)
摘要:IOC英文为 Inversion of Control,即反转模式,这里有著名的好莱坞理论:你呆着别动,到时我会找你。Ioc模式是解决调用者和被调用者之间关系的模式,可以有效降低软件的耦合度,并适合团队开发,使用这种模式需要首先设计一个好的框架,也可以称之为IoC容器(可能这样的说法在Java世界更Cool J)。其实Windows内部就存在这样的模式,称之为Callback(回调),在D... 阅读全文
posted @ 2008-04-08 10:54 sonicit 阅读(1070) 评论(0) 推荐(0)
摘要:在使用Frame作为基类实现继承时,发现窗口出现“Property OldCreateOrder does not exist ”的错误,在网上找了一大圈也没有。后来在Borland网站上找到了一些线索http://qc.borland.com/wc/qcmain.aspx?d=9481 和 http://qc.borland.com/wc/qcmain.aspx?d=5866 ,看一下我... 阅读全文
posted @ 2008-03-30 10:30 sonicit 阅读(2220) 评论(0) 推荐(0)
摘要:{ 将数据集操作方面的东西全部封装成一个单独的类 TcustomAdoDataSet是TadoQuery、TadoTable、TadoDataSet、TadoCommand的公共祖先类 应尽量使用TadoDataSet和TadoCommand类 } unit untOpeDataSet; interface uses SysUtils, db, adodb, commonFunc... 阅读全文
posted @ 2008-03-25 09:16 sonicit 阅读(2470) 评论(2) 推荐(0)
摘要:Delphi的Format函数大家都用得很多,第二个参数用着确实很方便。最近在数据库开发应用中需要自己创建一个带array of const参数的函数,对于常用的类型String,Integer,Pointer处理都没什么问题,但当用到Widestring类型时却出错,摸索了一上午,感觉获益良多。现在将问题、解决问题的思路、分析方法等一一道来,希望对诸君有所启发就达到了我写这篇文章的目的了... 阅读全文
posted @ 2008-03-23 16:04 sonicit 阅读(3594) 评论(0) 推荐(0)
摘要:1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库) 以下代码在WIN2K,D6,MDAC2.6下测试通过, 编译好的程序在WIN98第二版无ACCESS环境下运行成功. 1//在之前uses ComObj,ActiveX 2//声明连接字符串 3Const 4SConnectionString = 'Provider=Microsoft.Jet.O... 阅读全文
posted @ 2008-03-21 11:00 sonicit 阅读(852) 评论(0) 推荐(0)
摘要:在服务函数中用Var用参数关键字时,比如 function TEMISLogic.UpdateMenu(var OldFields: TEMISFields): Boolean; begin Result := False; try Result := FEMISS.UpdateMenu(OldFields); except on E : Exception do ... 阅读全文
posted @ 2008-01-19 16:20 sonicit 阅读(1264) 评论(5) 推荐(0)
摘要:最近无意中发现在盒子论坛中有人回答了本文的问题,最后在Eurekalog的安装目录中的ExceptionLog.pas找到了多发送的Rest命令的地方,现传上来,有需要的朋友下载下面的文件。 因为163,SINA等邮件服务器的命令规定,在STOCK发送邮件时多发送了一个REST命令,去掉REST命令,问题解决。 ExceptionLog.pas文件下载 在D7下编译通过... 阅读全文
posted @ 2007-11-21 11:06 sonicit 阅读(433) 评论(0) 推荐(0)
摘要:在DELPHI下新建一工程,放置Edit1,Edit2,Label1,Label2,Button1组件.具体代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Registry;//在此加上Registry以... 阅读全文
posted @ 2007-10-31 15:33 sonicit 阅读(894) 评论(0) 推荐(0)
摘要:随着项目的失败,这些天一直在总结失败的原因,到底是为什么? 一、技术层面 1、少用指针类型,多用类。 虽然指针类型能有效的节约内存和加快运行速度,但指针远没有类来得稳定及易用。在日常使用中,往往指针对应的是record类型,例如 1 PDataColumns = ^DataColumns; 2 DataColu... 阅读全文
posted @ 2007-10-07 21:57 sonicit 阅读(862) 评论(1) 推荐(0)
摘要:最近在使用Thread时发现,如果在同步代码中有运行比较长的算法时,会把主线程阻塞,使界面无法操作。找了很多资料后来发现,在要在运行比较长的算法中加入Application.ProcessMessages。 Application.ProcessMessages的意思是响应主线程中消息队列里的消息。 阅读全文
posted @ 2007-08-17 13:55 sonicit 阅读(1578) 评论(3) 推荐(0)
摘要:权限和日志管理是较为常见的水平功能,而且需求比较灵活,通常硬编码到程序中。本文将对Delphi中的Action进行扩充实现将权限和日志管理功能从主程序中分离。1. 常见的方法是将权限管理和日志管理直接硬编码到过程或者对象的方法中。例如:procedure TForm1.Button1Click(Sender: TObject);begin if isSuperUser(UserName) th... 阅读全文
posted @ 2007-08-02 14:23 sonicit 阅读(630) 评论(0) 推荐(0)
摘要:在自定义组件中使用枚举类型的属性时,如用枚举类型的默认序列时如: TPotencesType = (PT_View, PT_Modify, PT_Delete, PT_Insert, PT_Auditing, PT_Dispose, PT_Checking ); 可以正常的在设计时来选择其属性,如果用自定义的序列时如: TPotencesTyp... 阅读全文
posted @ 2007-08-02 08:36 sonicit 阅读(427) 评论(0) 推荐(0)
摘要:1、在DLL项目中千万不要加入EurekaLog,不然在主程序调用时就会出现莫名其妙的内存问题。2、要使用EurekaLog发邮件的功能,发邮件的SMTP服务器必须支持8bit MIME编码。如SINA 阅读全文
posted @ 2007-07-27 16:05 sonicit 阅读(661) 评论(1) 推荐(0)
摘要:最近在用Eurekalog做项目的错误报告,以方便于BUG的纠错。发现无法正常的发邮件,密码什么的都是正确的,后来发现,Eurekalog用的是 8Bit MIME编码,而国内的大都不支持这种编码,后来发现SINA的SMTP支持(又发现Foxmail也支持的)。 如果大家有自己的服务器需要实现这个功能的话,最好把8Bit MIME编码也加进去,这样最安全了。 ... 阅读全文
posted @ 2007-07-26 09:42 sonicit 阅读(462) 评论(0) 推荐(0)
摘要:今天在Delphil园地中看到一个外挂软件叫 Delphi 7 Lite v2.02 还集成D2007的RTL,听说D2007的编译速度很快,那就下来试试吧。没试不知道,试了吓一跳,启动Delphi 7 Lite v2.02 都是错误,而且程序还不能编译,而后我立马删除,当我重启原来的D7时,发现安装的控件都没了。还是本分点一个个控件的安装,装完后,又发现个大问题,不能调试,我晕了。后... 阅读全文
posted @ 2007-07-23 09:58 sonicit 阅读(1443) 评论(3) 推荐(0)
摘要:防止同时打开多个应用程序的实例,也就是同时只有一个程序在运行,再运行同一个程序时,会自动关闭,以下代码放在项目的.dpr(项目文件)中的Application.Initialize;上面。 代码如下 var hMutex: DWORD; Ret: Integer;{以上代码要放在begin..end上}hMutex := 0; try hMut... 阅读全文
posted @ 2007-07-22 15:46 sonicit 阅读(330) 评论(0) 推荐(0)
摘要:大家都知道TList即可用于链表,又可用于数组,最近在做项目时遇到点小问题(可能是我对指针了解的不透彻吧),造成了不大不小的问题,下面就说说是怎么回事。 首先我先定义了Record及对应的指针类型。 PGoodsInfo = ^GoodsInfo; GoodsInfo = record ID : string; Name : stri... 阅读全文
posted @ 2007-07-22 08:41 sonicit 阅读(1046) 评论(0) 推荐(0)