现在有现成的dll ,但是record 怎么来使用
这是门禁系统dll的一个方法

解决方案 »

  1.   

    多条的打卡数据存储在record 中
      

  2.   

    先转化数据类型
    type RECORD
    lockadr(4) as byte
    ..........
    end type
      

  3.   

    我的程序在这里,请看看
     typedef struct {
    char lockadr[5]; ='1',..lockadr[3]='3',lockadr[4]=0;
    char card[17];    //card length = 10 
    char year[3];
    char month[3];
    char day[3];
    char hour[3];
    char minute[3];
    char second[3];
    char type;          
    }RECORD;     
    int int Pollalock(int adr,int eoch,int recdnum,
    char lockstate,RECORD* lockrecord)  是动态链接库一个方法以上是门禁系统dll的一个方法
    在vb中我是这样使用的
    Public Declare Function Pollalock Lib "hsn20adl.dll" (ByVal adr As Integer, Lecoh As Long, Lrecdnum As Long, Llockstate As Byte, Lrec As record) As LongPublic Type record
       dlockadr(0 To 4) As String * 1
       dcard(0 To 11) As String * 1
       dyear(0 To 2) As String * 1
       dmonth(0 To 2) As String * 1
       dday(0 To 2) As String * 1
       dhour(0 To 2) As String * 1
       dminute(0 To 2) As String * 1
       dsecond(0 To 2) As String * 1
       dtype As Byte
    End Type
      Dim fecoh As Long, fnum As Long, flo As Byte
      Dim frec As record, adr As String, flag As Long
       
      flag = Pollalock(1, fecoh, fnum, flo, frec)
      If flag = 1 Then
         MsgBox "read ok"
        
         MsgBox "CardNo " & frec.dcard(0) + frec.dcard(1) + frec.dcard(2) + frec.dcard(3) + frec.dcard(4)
      Else
         MsgBox "read faile"
      End If现在frec 里面应该存储是多条 record ,当只有一条记录时我采用frec.dcard(0) + frec.dcard(1) + frec.dcard(2) + frec.dcard(3) + frec.dcard(4) 可以读出这条记录。
    请问各位大侠,当有多条记录的时候我该怎样来取值呢?在这儿先谢谢了
      
      

  4.   

    Public Declare Function Pollalock Lib "hsn20adl.dll" (ByVal adr As Long, Lecoh As Long, Lrecdnum As Long, Llockstate As Byte, Lrec As record) As LongPublic Type record
       dlockadr(0 To 4) As Byte
       dcard(0 To 11) As Byte
       dyear(0 To 2) As Byte
       dmonth(0 To 2) As Byte
       dday(0 To 2) As Byte
       dhour(0 To 2) As Byte
       dminute(0 To 2) As Byte
       dsecond(0 To 2) As Byte
       dtype As Byte
    End TypeMsgBox "CardNo " & StrConv(frec.dcard, vbUniCode)