function ReadClockRecords(hPort: THandle; Clock_id: Integer; Style: Byte; OutData: Pchar; Kind: Byte=0):Integer
那位大哥幫我把上面的轉換成VB語言

解决方案 »

  1.   

    function ReadClockRecords(hPort as Long, Clock_id as Long, Style as Byte, OutData as String, Kind as Byte=0) as Integer 
      

  2.   

    declare function ReadClockRecords(hPort as Long, Clock_id as Long, Style as Byte, OutData as String, Kind as Byte=0) as Integer 或者function ReadClockRecords(hPort as Long, Clock_id as Long, Style as Byte, OutData as String, Kind as Byte=0) as Integer 
    ...
    end function
      

  3.   

    我也是這樣轉換,可VB調用是會直接跳出來,連錯誤的提示都不給,估計是pchar->string出錯
      

  4.   

    function ReadClockRecords(hPort as Long, Clock_id as Long, Style as Byte,byref OutData as String, Kind as Byte=0) as Integer  
      

  5.   

    Public Declare Function ReadClockRecords Lib "ICCO.dll" (ByVal hport As Long, ByVal clock_id As Integer, ByVal style As Byte, ByRef outdata As String, Optional ByVal kind As Byte = 1) As Integer
    這樣都試了,都不行的,還是直接出錯跳出來 
      

  6.   

    delphi当中是如何声明的?也许跟调用方式有关系,如果不是stdcall的,那VB就没办法调用。
    对了,返回值错了,应该是long而不是Integer.VB当中的Long对应Delphi的Integer(4字节,VB当中的Integer只是2字节)
      

  7.   

    是stdcall,返回的改用long 也是錯誤的。
    delphi中的Pchar是什麼?是不是指針來的?轉換成VB要用數組麼?
      

  8.   

    function ReadClockRecords(hPort: THandle; Clock_id: Integer; Style: Byte; OutData: Pchar; Kind: Byte=0):Integer;stdcall;external COMAPI;
    参数说明:
     hPort    : 端口句柄
     Clock_id : 机号
     Style    : 确定当前记录采集流程,有效参数含义如下:
           $00: 第1次启动记录采集操作;或机具本次上传的记录数据发现异常,需要重新上传,从上次正确接收的记录位置页开始采集。
           $01: 本次采集的记录接收正确,请继续上传;如果所有记录全部上传完毕,则自动退回空闲状态;
           $03: 机具本次上传的记录数据发现异常,需要重新上传,或第1次启动记录采集操作,从当前存贮的第1页记录开始采集
           $02: 本次采集的记录接收正确,请继续上传;如果所有记录全部上传完毕,则调整记录存贮指针,清除当前记录,自动退回空闲状态;
           $04: 与01参数配套使用,第1次启动记录采集操作,或机具本次上传的记录数据发现异常,需要重新上传,从当前存贮的第1页刷卡记录位置开始采集
    原形是這樣的,$01在VB中又要怎麼表示?
      

  9.   

    抱歉,有些时间没有接触过VB了。Public Declare function ReadClockRecords(ByVal hPort As Long, ByVal Clock_id As Long, ByVal Style As Byte, ByVal OutData As String, Optional ByVal Kind As Byte=0) As Long这是对的,关键在于你传入的这个OutData,首先需要预先分配内存。有点类似于GetWindowsDirectory的调用,也许这样子有一个参照的会比较好理解。
      

  10.   

    delphi 中的 String是没法被VB\VC识别的格式,必须使用pchar