说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

送分:delphi中的结构体定义,在VB中如何定义呢? 请帮忙!

编辑:说三道四文库 发布时间:2018-07-18 06:58
HTML文档下载 WORD文档下载 PDF文档下载
Delphi做的动态庫的头文件声明了以下结构体:

 T2001_DOOR_ACCESS = packed array[1..7, 1..7] of packed record
    StartTime: Word;                    //起始时间
    EndTime: Word;                      //结束时间
    //时间是双秒制,即: 0=0:0:0  1=0:0:2 2=0:0:4 ... 43199=23:59:58
    MoDay: Byte;                        //星期一是否有效   0=无效 1=有效
    TuDay: Byte;                        //星期二是否有效   0=无效 1=有效
    WeDay: Byte;                        //星期三是否有效   0=无效 1=有效
    ThDay: Byte;                        //星期四是否有效   0=无效 1=有效
    FrDay: Byte;                        //星期五是否有效   0=无效 1=有效
    SaDay: Byte;                        //星期六是否有效   0=无效 1=有效
    SuDay: Byte;                        //星期日是否有效   0=无效 1=有效
  end;

  //注册卡数据结构       3002 bytes
  T2001_CARD_LIST = packed record
     CardCount: Word;                    //注册的卡的数量
     Cards: packed array[0..999] of packed record //用户卡号
        Cardzn: Byte;                     //区号
        Cardid: Word;                     //卡号
     end;
  end;

我在VB中调用动态庫,这两个结构体怎样定义呢? 
谢谢先!
不懂Delphi,是不是这样的啊:
 T2001_DOOR_ACCESS = packed array[1..7, 1..7] of packed record
    StartTime: Word;                    //起始时间
    EndTime: Word;                      //结束时间
    //时间是双秒制,即: 0=0:0:0  1=0:0:2 2=0:0:4 ... 43199=23:59:58
    MoDay: Byte;                        //星期一是否有效   0=无效 1=有效
    TuDay: Byte;                        //星期二是否有效   0=无效 1=有效
    WeDay: Byte;                        //星期三是否有效   0=无效 1=有效
    ThDay: Byte;                        //星期四是否有效   0=无效 1=有效
    FrDay: Byte;                        //星期五是否有效   0=无效 1=有效
    SaDay: Byte;                        //星期六是否有效   0=无效 1=有效
    SuDay: Byte;                        //星期日是否有效   0=无效 1=有效
  end;
----

Type T2001_DOOR_ACCESS

  StartTime As Long
  EndTime As Long
  MonDay As Byte
  TuDay As Byte                        //星期二是否有效   0=无效 1=有效
    WeDay As Byte                        //星期三是否有效   0=无效 1=有效
    ThDay As Byte                        //星期四是否有效   0=无效 1=有效
    FrDay As Byte                        //星期五是否有效   0=无效 1=有效
    SaDay As Byte                        //星期六是否有效   0=无效 1=有效
    SuDay As Byte   
End Type
To benyfeifei(狒狒) ( ) :
  T2001_DOOR_ACCESS = packed array[1..7, 1..7] of packed record 是定义一个二维数组的结构体,用VB怎么样表示呢?
dim var(1 to 7 , 1 to 7) as T2001_DOOR_ACCESS


To benyfeifei(狒狒) ( ) :

function F2001_SetDoorAccess(Acmid as byte, Doorid s  Byte;  DoorAccess asb T2001_DOOR_ACCESS) as Integer;
那怎样定义呢?
Declare function F2001_SetDoorAccess Lib "文件名.DLL" (Byval Acmid as Byte, Doorid As Byte, DoorAccess As T2001_DOOR_ACCESS) As Long

函数返回值可能是Integer,因为我不知道Delphi中的Integer占用几个字节,如果占用两个,则返回值是Integer型,如果占4个,则是Long

To Benyfeifi:
   
   我是不是应该这样做:
Type T2001_DOOR_ACCESS
  StartTime As Long
  EndTime As Long
  MonDay As Byte
  TuDay As Byte                        //星期二是否有效   0=无效 1=有效
    WeDay As Byte                        //星期三是否有效   0=无效 1=有效
    ThDay As Byte                        //星期四是否有效   0=无效 1=有效
    FrDay As Byte                        //星期五是否有效   0=无效 1=有效
    SaDay As Byte                        //星期六是否有效   0=无效 1=有效
    SuDay As Byte   
End Type

 Dim lRet as long 
  Dim byAcmID as byte
  Dim MyAccess(1 to 7 , 1 to 7) as T2001_DOOR_ACCESS
  ....
  lRet = F2001_SetDoorAccess(byAcmID,MyAccess)
  ....

//以下是Delphi的动态庫声明:
T2001_DOOR_ACCESS = packed array[1..7, 1..7] of packed record
    StartTime: Word;                    //起始时间
    EndTime: Word;                      //结束时间
    //时间是双秒制,即: 0=0:0:0  1=0:0:2 2=0:0:4 ... 43199=23:59:58
    MoDay: Byte;                        //星期一是否有效   0=无效 1=有效
    TuDay: Byte;                        //星期二是否有效   0=无效 1=有效
    WeDay: Byte;                        //星期三是否有效   0=无效 1=有效
    ThDay: Byte;                        //星期四是否有效   0=无效 1=有效
    FrDay: Byte;                        //星期五是否有效   0=无效 1=有效
    SaDay: Byte;                        //星期六是否有效   0=无效 1=有效
    SuDay: Byte;                        //星期日是否有效   0=无效 1=有效
  end;

function F2001_SetDoorAccess(Acmid, Doorid: Byte; const DoorAccess: T2001_DOOR_ACCESS): Integer;
stdcall; external ACM2001DLLFILE;
{ Doorid: 门序号, 1 到 2 有效
}
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘