上一页 1 ··· 154 155 156 157 158 159 160 161 162 ··· 203 下一页
摘要: 应用场景:使用BROKER服务器来实现应用服务器群集的负载平衡。消息格式统一使用JSON格式的字符串。当然也可以使用XML格式或者使用结构体方式。但本次设计只使用JSON格式的字符串。因为JSON是国际标准,很多语言都支持它,当然XML也是国际标准,但它没有JSON这么轻量。结构体的话可能各语言之间会不兼容。SOCKET通讯协议发送消息的时候首先发送命令号,然后再发送JSON格式的。各种消息格式定义如下:客户端同BROKER服务器之间的消息传递:ClientCallBroker: #1 {"MT":"CCALLB"} 消息说明:客户端呼叫BROKER服务 阅读全文
posted @ 2011-07-08 23:32 delphi中间件 阅读(783) 评论(0) 推荐(0)
摘要: 为了达到1:10000的连接,可以采用Server-Client的连接方式,而为了达到1:10000*100的连接,我们怎么办呢?一般会采用Client-> ConnServer -> LogicServer。这是技术背景。ConnServer在接受完Client 的连接后,将Logic Server 暴露给Client,并立刻断开连接。以后的数据交互就和Conn Server没有关系了,这种架构有很多的优势。线程是一个非常重要的概念,尤其是现在多核服务器的发展。当然,提到了线程自然应该说到线程之间的互斥。这也是服务器开发者们在开发最初最容易出现的问题。体现在一个资源或者多个资源在 阅读全文
posted @ 2011-07-05 22:07 delphi中间件 阅读(437) 评论(0) 推荐(0)
摘要: //在后面介绍 TPerlRegEx 类的方法时, 关于对 (子表达式) 的引用还有更多话题.Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索" //匹配右边varreg: TPerlRegEx;beginreg := TPerlRegEx.Create(nil);reg.Subject := 'Delphi 6; Delphi 7; Delphi 2007; Delphi Net';reg.RegEx := 'Delphi (?=2007)'; // ?=reg.Replacement : 阅读全文
posted @ 2011-06-17 21:58 delphi中间件 阅读(754) 评论(1) 推荐(0)
摘要: uses NativeXml;procedure TForm1.Button1Click(Sender: TObject);begin Caption := fXML.Root.FindNode('father').Value; {tom}end;procedure TForm1.CreateXMLClick(Sender: TObject);begin fXML.CreateName('root'); // create root node with fXML.Root.NodeNew('student') do begin // create 阅读全文
posted @ 2011-06-17 21:51 delphi中间件 阅读(260) 评论(0) 推荐(0)
摘要: {eclApp.ActiveSheet.PageSetup.PaperSize := xlPaperA3; //设置纸张的类型 eclApp.ActiveSheet.PageSetup.Orientation := xlLandscape; //设置是横向打印还是纵向打印 eclApp.ActiveSheet.PageSetup.PrintTitleRows := '$3:$5'; //设置表头重复如果多页的情况下 eclApp.ActiveSheet.PageSetup.CenterFooter := '第&P页,共 &N 页'; //设置页码 阅读全文
posted @ 2011-06-01 21:29 delphi中间件 阅读(890) 评论(0) 推荐(0)
摘要: 类似代码:CoInitialize(nil) ; //CoInitialize was not called Qry := TADOQuery.Create(nil) ; try// MUST USE OWN CONNECTION// Qry.Connection := Form1.ADOConnection1; Qry.ConnectionString := ConnStr; Qry.CursorLocation := clUseServer; Qry.LockType := ltReadOnly; Qry.CursorType := ctOpenForwardOnly; Qry.SQL.T 阅读全文
posted @ 2011-05-18 14:57 delphi中间件 阅读(1289) 评论(0) 推荐(0)
摘要: 网上一大把这种方法,可惜许多不能用。这个我试过了,可以。USES Masksprocedure GetFileListEx(FilePath, ExtMask: string; FileList: TStrings; SubDirectory: Boolean = True); //遍?目?及子目?function Match(FileName: string; MaskList: TStrings): boolean;var i: Integer;begin Result := False; for i := 0 to MaskList.Count - 1 do begin if Match 阅读全文
posted @ 2011-05-18 14:54 delphi中间件 阅读(275) 评论(0) 推荐(0)
摘要: zsl := cxGrid1DBTableView1.DataController.Summary.FooterSummaryValues[0]; zje := cxGrid1DBTableView1.DataController.Summary.FooterSummaryValues[1]; 阅读全文
posted @ 2011-05-07 22:18 delphi中间件 阅读(477) 评论(0) 推荐(0)
摘要: //我们在写C/S管理系统时经常是根据用户的权限来相应禁止一些菜单//在实践时,我发现使用动态方法创建菜单有可能对软件被破解起到一点小的作用//因为实现起来,不是很难,所以写出来分享一下//我们在菜单的事件中,利用菜单项的TAG值来判定是点了那一项//首先,用一张数据表来存所有用户的菜单内容,格式如下//ID int//image int //-1是指ImageIndex的值,即无图标//caption varchar 20//layer smallint //菜单的层次-1是第一层//tag int //菜单的TAG值,用于得知点击事件//所有的菜单项将使用一个公共事件处理,在... 阅读全文
posted @ 2011-04-23 10:01 delphi中间件 阅读(504) 评论(0) 推荐(0)
摘要: 我已经看到了很多人想在一个应用程序中挂接消息搞一个干净的解决方案。所以,前一段时间作我决定写一个钩子类,能很好的处理事件之类的东西。 Hook.pas可以分配方法的指针指向一个过程(有一些汇编的帮助)。 例如:如果你想在应用程序中捕获所有击键 - 只需声明一个TKeyboardHook实例,指派一个处理程序给OnPreExecute或OnPostExecute,或同时处理这两个事件。设置激活你的KeyboadHook(KeyboardHook.Active:= true)然后你就可以出去等他运行了.. Windows的钩子下面是Windows API指南中钩子的说明: 一个钩子是系统消息处理机 阅读全文
posted @ 2011-04-23 09:53 delphi中间件 阅读(940) 评论(0) 推荐(0)
上一页 1 ··· 154 155 156 157 158 159 160 161 162 ··· 203 下一页