zoukankan      html  css  js  c++  java
  • MIDAS中传递自定义结构体

    MIDAS中不可以传递自定义的结构体,或者数据流之类的.可以借助Variant来实现这一功能.

     1 //将VarArray转换成结构体,这种转换只需要设计接口时传回Variant和Rec的Size就可以了.
    2
    3 procedure VarAryToRec(aVar: Variant; const Size:Integer; var Rec);
    4 var
    5 pb: PByteArray;
    6 i: Integer;
    7 begin
    8 FillChar(Rec, Size, 0);
    9 pb := @Rec;
    10 for i := 0 to Size - 1 do begin
    11 Pb^[i] := aVar[i];
    12 end;
    13 end;
    14
    15 //将结构体转换成VarAry,这种转换需要先建立一个VarAry,然后再通过接口传递.
    16
    17 procedure RecToVarAry(const Rec; const Size: Integer;var aVar:Variant);
    18 var
    19 pb: PByteArray;
    20 i: Integer;
    21 begin
    22 pb := @Rec;
    23 for i := 0 to Size -1 do begin
    24 aVar[i] := pb^[i];
    25 end;
    26 end;
    27
    28 //Client调用示例
    29
    30 var
    31 aVar: Variant;
    32 Size: Integer;
    33 Done: Integer;
    34
    35 begin
    36
    37 Size := SizeOf(Rec);
    38 aVar := VarArrayCreate([0, Size - 1], varByte);
    39 try
    40 RecToVarAry(Rec, Size, aVar);
    41 SocketConnection.AppServer.InserDataRecord(Size, aVar, Done);
    42 if not Boolean(Done) then
    43 Exit;
    44 DataIndex := Done;
    45 finally
    46 aVar := Unassigned;
    47 end;
    48
    49 end;
    50
    51 //服务器端示例,这个接口需要在IAppServer中设计好.
    52
    53 procedure TAppSer.InserDataRecord(Size: Integer; Data: OleVariant;
    54 out Done: Integer);
    55 var
    56 Rec: TSampleDataRecord;
    57 n: Integer;
    58 begin
    59 Done := -1;
    60 if not ADOConnection.Connected then
    61 Exit;
    62 VarAryToRec(Data, Size, Rec);
    63 //...........
    64
    65 end;

      

  • 相关阅读:
    [转]优秀的程序员不会觉得累成狗是一种荣耀
    .NET读写Excel工具Spire.XlS使用(DataExport )
    WPF之Binding深入探讨
    第一个WPF应用程序
    Visio作图
    唯一的重复元素
    Strange Problem O(∩_∩)O~
    数据库知识点①
    HDU 2825 Wireless Password
    POJ 1625 Censored!
  • 原文地址:https://www.cnblogs.com/solokey/p/2113315.html
Copyright © 2011-2022 走看看