⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comm.pas

📁 三层系统设计中,应用服务层和客户端使用结构体传送数据进行通信.
💻 PAS
字号:
unit Comm;

interface
uses SysUtils,Variants;

type TARec=Record
  Name:String;
  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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -