上一页 1 ··· 143 144 145 146 147 148 149 150 151 ··· 203 下一页
摘要: 如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(Sender: TObject);varsDate: string;begininherited;// 默认查当天的销售数据sDate := FormatDateTime('yyyy-mm-dd', Now);DateTimePicker1.DateTime := StrToDateTime(sDate + ' 00:00:00');DateTimePicker2.D 阅读全文
posted @ 2013-01-30 11:26 delphi中间件 阅读(10600) 评论(0) 推荐(1)
摘要: 最近做了个断网收银的项目,服务端使用SQL SERVER数据库,收银机使用ACCESS数据库。做了个中间件来同步数据。哪些数据需要同步?新增的数据修改过的数据删除的数据(删除只是置删除标志位,可以视为修改过的数据进行处理)需要同步的数据表统一预留俩个用于数据同步的字段:字段名:CreateDate,数据类型:TDateTime,新增数据的时间戳;字段名:ModifyDate,数据类型:TDateTime,修改过的数据的时间戳。倘若需要同步的数据表内的数据小,可以不使用时间戳,而在每次同步数据之前,先删除表内的所有数据,然后再插入同步的数据。如此编程最为简单,但必须是同步数据较小的情况下。数据同 阅读全文
posted @ 2013-01-30 11:17 delphi中间件 阅读(2218) 评论(1) 推荐(0)
摘要: 如果通讯协议使用TCP/IP,客户端同中间件之间的SOCKET连接是非常有讲究的。应该视应用场合巧妙地使用短连接搭配长连接的方式。纯粹地使用长连接或者纯粹地使用短连接,往往不大合理。如果长时间让一个SOCKET长连接休闲,这无疑是对中间件资源的浪费,如果这种休闲的长连接数量非常多,可能会影响中间件的性能。光靠中间件通过发心跳包自动断开长时间休闲的连接,其实这是中间件对此类事件的最后一道防线。如果远程方程都做成短连接,也不大好,例如一些远程方法成块地执行,如果执行一个远程方法先同中间件建立SOCKET连接,执行完以后立即断开连接,这样就不好。因为建立SOCKET连接比较地耗时,一些远程方法成块地 阅读全文
posted @ 2013-01-10 21:08 delphi中间件 阅读(3843) 评论(1) 推荐(0)
摘要: type TOutBufPassThrough = record // 用于USB接口打印机开钱箱 // 调用windows.extEscape可以直接用extEscape(handle, PASSTHROUGH, sizeOf(outBuf), @outBuf, 0, nil)向设备发送esc命令 阅读全文
posted @ 2013-01-05 17:38 delphi中间件 阅读(1085) 评论(0) 推荐(0)
摘要: 客户端登录的时候,自动同中间件校对时间。procedure TdmCommonFun.setLocalDateTime(Value: TDateTime);var lSystemDateTime: TSystemTime;begin DateTimeToSystemTime(Value, lSystemDateTime); SetLocalTime(lSystemDateTime);end; 阅读全文
posted @ 2013-01-05 17:36 delphi中间件 阅读(644) 评论(0) 推荐(0)
摘要: function TdmCommonFun.GetIdeSerialNumber: AnsiString; stdcall;const IDENTIFY_BUFFER_SIZE = 512;type TIDERegs = packed record bFeaturesReg: Byte; // Used for specifying SMART "commands". bSectorCountReg: Byte; // IDE sector count register bSectorNumberReg: Byte; // IDE sector number registe 阅读全文
posted @ 2013-01-05 17:35 delphi中间件 阅读(896) 评论(0) 推荐(0)
摘要: procedure TFrmMain.btnUpdateFilesClick(Sender: TObject);begin try if Assigned(gEXEmm) then FreeAndNil(gEXEmm); if Assigned(gINImm) then FreeAndNil(gIN 阅读全文
posted @ 2012-12-29 22:24 delphi中间件 阅读(810) 评论(0) 推荐(0)
摘要: DataSnap可以直接传递和返回TStream类型的参数,这点是很方便的。但是很多人发现好像大小稍微大点就工作不正常了。DataSnap默认的缓存大小是32k 所以如果流的大小超过这个大小就会被自动分成多个包,这就是传递大量数据的基础,如果一次性发送就可能受到内存的限制。当传递大量数据时获取到的大小是-1,所以如果还是按照一般的方法来读取流的数据就会有问题了。由于流的数据是原始数据包发送,所以在不对数据包压缩加密的情况下,传递速度是和其它方式没有多大区别的。0102030405060708091011121314151617181920212223// FS是一个文件流function TM 阅读全文
posted @ 2012-11-23 21:48 delphi中间件 阅读(2163) 评论(0) 推荐(1)
摘要: unit untDMPool;interfaceuses Classes, SyncObjs, SysUtils, DateUtils, untData;type PServerObject = ^TServerObject; TServerObject = record ServerObject: TdmData; InUse: Boolean; end; TDMPool = class private FCriticalSection: TCriticalSection; FServerObjects: TList; FPoolSize: int... 阅读全文
posted @ 2012-11-23 20:58 delphi中间件 阅读(562) 评论(0) 推荐(1)
摘要: procedure TForm1.Button1Click(Sender: TObject);var s, b: AnsiString; a: array[0..9] of Byte;begin s := 'test'; FillChar(a, SizeOf(a), ''); Move(s[1], a, SizeOf(a)); SetLength(b, SizeOf(a) + 1); Move(a, b[1], SizeOf(a)); Caption := b;end; 阅读全文
posted @ 2012-11-15 21:39 delphi中间件 阅读(445) 评论(0) 推荐(0)
上一页 1 ··· 143 144 145 146 147 148 149 150 151 ··· 203 下一页