上一页 1 ··· 139 140 141 142 143 144 145 146 147 ··· 197 下一页
摘要: FASTREPORT的设计界面,保存的时候是生成扩展名为.fr3的文件来保存设计好的报表模板的。现在改为用数据表的BLOB字段来保存报表模板。 m :=TMemoryStream.Create; try Report.SaveToStream(m); f_printsetup.ClientDataSet1.Edit; tblobfield(f_printsetup.ClientDataSet1.FieldByName('rep')).LoadFromStream(m); f_printsetup.ClientDataSet1.Post; if RemoteMethod.Post 阅读全文
posted @ 2012-09-13 22:13 delphi中间件 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 1.字串统一使用WIDESTRING类型2.客户端调用适配器DLL时,参数传DELTA,不要传TCLIENTDATASET 阅读全文
posted @ 2012-09-11 16:03 delphi中间件 阅读(856) 评论(1) 推荐(0) 编辑
摘要: unit main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Menus, ExtCtrls, RemoteMethod ,DBClient, DB;type PNode = ^TNode; TNode = record id: string; cn: string; tw: string; en: string; dll: string; classname: WideString; dsc: string; pid:. 阅读全文
posted @ 2012-09-09 23:12 delphi中间件 阅读(758) 评论(0) 推荐(0) 编辑
摘要: 客户端可以是D5~XE2任意版本的DELPHI来写。非常适合老系统升级。 阅读全文
posted @ 2012-09-07 17:59 delphi中间件 阅读(1157) 评论(3) 推荐(0) 编辑
摘要: // 单元功用: 线程池// 单元设计: 陈新光// 设计日期: 2012-09-03unit ThreadPool;interfaceuses system.Classes, system.SyncObjs, system.SysUtils, system.DateUtils, GlobalVar, Vcl.Forms, Winapi.Windows;type TWorkThread = class(TThread) private FThreadMethod: TThreadMethod; Fsync: Boolean; FEvent: THandle; protected procedu 阅读全文
posted @ 2012-09-03 23:03 delphi中间件 阅读(2471) 评论(0) 推荐(1) 编辑
摘要: 单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中,一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出。这就是即时创建,即时销毁的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务执行时间很短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。t1: 线程创建时间t2: 线程执行时间,包括线程的同步等时间t3: 线程销毁时间线程本身的开销所占的比例为(t1+t3)/(t1+t2+t3)。如果线程执行的时间很短,这笔开销可能占到20%~50%左右。如果任务执行很频繁的话,这笔开销将是不可忽 阅读全文
posted @ 2012-09-03 11:07 delphi中间件 阅读(2030) 评论(0) 推荐(1) 编辑
摘要: xe2 DATASNAP出来一年了。相信许多人同我一样领略它开发中间层的快捷(相对老的MIDAS确实简便了许多)。但苦于自己有许多的老系统是用DELPHI7甚至DELPHI6开发的,想用XE2开发的中间层升级,却不成。直接的话,它们确实是不兼容。还是那句话,既然直接的不行,咱就来间接的。使用桥接模式,正好可以解决问题。至少,我试过了,可以。思路是:使用XE2开发一个动态库,这个动态库负责SOCKET连接中间层,还有参数类型转换(主要是ANSISTRING和UNICODESTRING的问题),在这个桥接的动态库,这些全部都解决了。我测试的时候DELPHI7调用XE2 DATASNAP的中间层跑得 阅读全文
posted @ 2012-08-24 14:49 delphi中间件 阅读(1231) 评论(3) 推荐(0) 编辑
摘要: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, ComCtrls, Grids, DBGrids;type PNodeRec=^TNodeRec; TNodeRec=record id: string; name: string; pid: string; end; TForm1 = class(TForm) TreeView1: TTreeView... 阅读全文
posted @ 2012-07-27 00:06 delphi中间件 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 生成一棵树方法一:procedure MakeTree(Query: TQuery; TreeView: TTreeView);var List: TStringList; Node: TTreeNode; Index: Integer;begin TreeView.Items.BeginUpdate; try TreeView.Items.Clear; List := TStringList.Create; try List.Sorted := True; while not Query.Eof do begin if ... 阅读全文
posted @ 2012-07-26 12:44 delphi中间件 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 关于延迟时间的一点智慧一般的做法:Sleep(2000); // 延迟2秒此种做法有俩个弊端:(1)如果实际需要的延迟时间不需要2秒,则明显有延迟时间浪费;(2)如果实际需要的延迟时间超过2秒,则很可能发生不可预料的错误。改进的做法: repeat Sleep(10); until FileExists('c:\temp\invoice.pdf')=True;优点:将一次大的延迟时间分割成小的,一旦条件成立就退出了延迟,使得延迟的时间同实际需要的几乎一样。也杜绝了前面第二种情况错误的发生。 阅读全文
posted @ 2012-07-18 16:06 delphi中间件 阅读(838) 评论(0) 推荐(1) 编辑
上一页 1 ··· 139 140 141 142 143 144 145 146 147 ··· 197 下一页