VB下的结构类型定义如下:Type EMCARDINFO_ATTEND
    nCardID         As Long '卡号
    nPersonID       As Long '工号
    nGrade          As Long '级别
    nGroup          As Long '分组
    strname         As String * 8 '姓名
End TypeType REGCARDINFO
    nNumber         As Long '本次读多少张注册内容,赋值为16
    nAddr           As Long '从第条读起,赋值为16倍数
    strcardinfo(1 To 100) As EMCARDINFO_ATTEND
End Type
动态库函数原型声明如下:
Public Declare Function KRegisterCardAutoID Lib "k950c.dll" (ByVal HDev As Long, ByVal DeviceID As Long, ByVal bisbig5 As Boolean, ByRef StrAttCard As REGCARDINFO) As Long
请问以上类型及函数转换DELPHI下的类型该如何转换,谢谢!

解决方案 »

  1.   

    金华GTC的发卡函数,我做过,DELPHI定义如下:type
      EMATTCARDINFO=RECORD// 单张考勤门禁卡数据结构
               nCardID :LongInt;//卡序列号
      nPersonID:LongInt;//工号
      nGrade:LongInt;
              nGroup:LongInt;//级别与分组,暂无意义
      strName:array[1..8] of char;//姓名
    end;type
      AttGuardCardID=RECORD //下载注册卡数据结构
               nNumber:LongInt;//下载的个数,小于等于16
      nAddr:LongInt;//无意义
               sEmAttguardCard:array [1..100] of EMATTCARDINFO;//卡内容
    end;Type
      pAttGuardCardID=^AttGuardCardID;//函数声明
    function KRegisterCardAutoID(HDev:longint;DeviceID:integer;bIsBig5:longbool;StrAttcard:pAttGuardCardID):longint;stdcall;far;external 'K950c.dll';
      //函数调用
     Try
        StrAttcard.nNumber:=1;
        StrAttcard.nAddr:=ccid;
         
        for i:=1 to StrAttcard.nNumber do
        begin
          StrAttcard.sEmAttguardCard[i].nCardID:=strtoint(sPID);     //卡序列号
          StrAttcard.sEmAttguardCard[i].nPersonID:=strtoint(sEmpNo); //卡工号
          StrAttcard.sEmAttguardCard[i].nGrade:=0;
          StrAttcard.sEmAttguardCard[i].nGroup:=0;
          for j:=1 to 8 do
            StrAttcard.sEmAttguardCard[i].strName[j]:=sEmpName[j];
        end;
      except
      end;
      if KRegisterCardAutoID(h,ccid,false,@strAttcard)=0 then
        showmessage('发卡成功!')
      else
        showmessage('发卡失败!');