在VB中声明以下函数
Declare Function viOpenDefaultRM Lib "VISA32.DLL" Alias "#141" (sesn As Long) As Long
Declare Function viFindRsrc Lib "VISA32.DLL" Alias "#129" (ByVal sesn As Long, ByVal expr As String, vi As Long, retCount As Long, ByVal desc As String) As Long
调用时  Call viOpenDefaultRM(defrm)
   Call viFindRsrc(defrm, "USB?*", list, nmatches, matches)
能发现设备 nmatches=1
而用delphi做以下声明 
function viOpenDefaultRM(var sesn: integer): Integer; stdcall;external 'visa32.dll' ;
function viFindRsrc(sesn: integer; expr: string; vi: integer; var retCount: integer; var desc: string): integer; stdcall; external 'visa32.dll';
调用时
  viopendefaultrm(rm);
  viFindRsrc(rm,'usb?*',list,nmatches, matches);
没发现设备 nmatches=0
请问哪错了。请各位大侠指点一下吧!

解决方案 »

  1.   

    function viOpenDefaultRM(var sesn: integer): Integer; stdcall;external 'visa32.dll' ;
    function viFindRsrc(sesn: integer; expr: PChar; vi: integer; var retCount: integer; desc: PChar): integer; stdcall; external 'visa32.dll';
    调用时
      s := 'usb?*';
      viopendefaultrm(rm);
      viFindRsrc(rm,PChar(s),list,nmatches, PChar(matches));
      

  2.   

    提示新错误" access violation at address 631473A2 in module 'visa32.dll'.write of address 004280B4" 请指点。这是什么意思
      

  3.   

    matches定义为Array[0..254] of Char;试下
      

  4.   

    #2那个读错误,我个人认为是string处出错,因为VB的string是UNICODE,而低版本DELPHI是ANSI
      

  5.   

    有人知道吗?如果传string种参数,都没问题,
      

  6.   

    我用VC++编程VISA和频谱仪通信,也发现不了仪器,还望各位帮忙解答一下。编译时:已加载“C:\Windows\System32\Visa32.dll”,未使用调试信息生成二进制文件。