+ -
当前位置:首页 → 问答吧 → vb调用动态库问题

vb调用动态库问题

时间:2011-12-01

来源:互联网

dephi:
function Read_Guest_Card(
  AReaderType,
  ACardType,
  APort,
  ASector,
  ABlock:Byte;
  AHotelPwd:Pchar;
  var ALockNo,
  AStartSuite,
  AEndSuite,
  ACardID,
  ASubCardID:integer;
  ATime:Pchar
  ):integer; stdcall; External DLL_Name;

vb:
Public Declare Function Adx_Read_Guest_Card Lib "dll_name.dll" Alias "Read_Guest_Card" (ByVal AReaderType As Byte, ByVal ACardType As Byte, ByVal APort As Byte, ByVal ASector As Byte, ByVal ABlock As Byte, ByVal AHotelPwd As String, ByVal ALockNo As Long, ByVal AStartSuite As Byte, ByVal AEndSuite As Byte, ByVal ACardID As Long, ByVal ASubCardID As Long, ByVal ATime As String) As Byte

vb调用

  Dim ALockNo As Byte
  Dim AStartSuite As Byte
  Dim AEndSuite As Byte
  Dim ACardID As Integer
  Dim ASubCardID As Integer
  Dim ATime As String * 11
  Dim iRet As Byte
  AdxLockType=1
  AdxCardType=1
  ComPort=1
  HotelCode = "12345678"
  iRet = Adx_Read_Guest_Card(AdxLockType, AdxCardType, ComPort, IIf(AdxCardType = 1, 3, 5), 0, HotelCode, ALockNo, AStartSuite, AEndSuite, ACardID, ASubCardID, ATime)

执行这个函数的时候直接崩毁掉了

作者: sunghj   发布时间: 2011-12-01

几乎可以肯定是你都函数声明有问题导致了内存读写错误, 所以程序崩溃。这是DLL函数运用不当的典型问题。
问题还是要修改你的函数声明。

作者: Veron_04   发布时间: 2011-12-01

太疯狂了,这么一堆参数

建议通过文件作为信息传递。将所有参数都写入到一个文件中,这样传递一个文件过去就行了。真乱,不敢再看了。

作者: sysdzw   发布时间: 2011-12-01

动态库是别人的,delphi调用正常,但是vb崩溃,刚才没说清

作者: sunghj   发布时间: 2011-12-01

delphi调用dll代码

  Time:pchar;
  tmpTime:string;
  HotelPwd:array[0..8] of char;
  rt,LockNo,CardID,SubCardID,StartSuite, EndSuite:integer;
  LockNo:=0;
  CardID:=0;
  SubCardID:=0;
  StartSuite:=0;
  EndSuite:=0;
  GetMem(Time,11);
  StrPCopy(HotelPwd, Edit2.Text);
  rt:=Read_Guest_Card(FReaderType,FCardType, FPortNo,FSector,FBlock,@HotelPwd,
  LockNo,StartSuite,EndSuite,CardID,SubCardID,Time);

作者: sunghj   发布时间: 2011-12-01

热门下载

更多