comm.pas.~1~
来自「三层系统设计中,应用服务层和客户端使用结构体传送数据进行通信.」· ~1~ 代码 · 共 69 行
~1~
69 行
/*================================================
单元名称:Comm
单元功能:定义了一个记录类型TARec,这一文件Server和Client中都要引用
作者:小宇飞刀(http://xieyunc.blog.163.com/)
修改日期:2007-03-20 13:56:39
================================================*/
unit Comm;
interface
uses SysUtils,Variants;
type TARec=Record
Name:ShortString;
Age:ShortInt;
end;
function RecordToVariant(value:TARec):OleVariant; //有问题,好象只能传递第一个成员的值
function VariantToRecord(value:OleVariant):TARec; //有问题
function RecordToVariant2(aRec:TARec):OleVariant;//Writed by 小宇飞刀(xieyunc)
function VariantToRecord2(vData:OleVariant):TARec;//Writed by 小宇飞刀(xieyunc)
implementation
// TARec ---> Variant
function RecordToVariant(value:TARec):OleVariant;
var
P:Pointer;
ii:Integer;
begin
ii := sizeof(TARec);
Result := VarArrayCreate([0,ii],varByte);
P := VarArrayLock(Result);
Move(value,P^,sizeof(P));
VarArrayUnlock(Result);
end;
// OleVariant ----> TARec
function VariantToRecord(value:OleVariant):TARec;
var
P:Pointer;
ii:Integer;
begin
ii := sizeof(TARec);
P:= VarArrayLock(value);
Move(P^,Result,ii);
VarArrayUnlock(value);
end;
function RecordToVariant2(aRec:TARec):OleVariant;//Writed by 小宇飞刀(xieyunc)
begin
Result:=VarArrayCreate([0,1],VarVariant);
Result[0] := aRec.Name;
Result[1] := aRec.Age;
end;
function VariantToRecord2(vData:OleVariant):TARec;//Writed by 小宇飞刀(xieyunc)
begin
if VarIsArray(vData) then
begin
Result.Name := vData[0];
Result.Age := vData[1];
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?