function XCOpen (Var
     hCom: HWND;
     lsCfgFile: String;
     CfgItemName:string
     ):Integer; Stdcall;external 'XCRF500API.dll''XCRF500API.dll'是一个VC6.0的DLL文件,
function XCOpen是DELPHI调用的DLL文件问题出现在hcom上面,它是一个句柄,
VC是中要调用它的初始值是-1,
可是DELPHI中的HWND是0-4294967295
用其它的LONGINT型时,出现THE TWO PARAMETER MUST BE IDENTICAL哪位大侠有控制句柄的办法,而且可以是-1的

解决方案 »

  1.   

    在VB中,用的是LONG型可以,但在DELPHI中只能用HWND其它的会出错,不知道为什么
      

  2.   

    在DELPHI中用integer也会出错,不知道THE TWO PARAMETER MUST BE IDENTICAL为什么
    麻烦各位大侠
      

  3.   

    '打开通讯端口
    Declare Function XCOpen Lib "XCRF500API.dll" ( _
        ByRef hCom As Long, _
        ByVal lsCfgFile As String, _
        ByVal CfgItemName As String _
    ) As Byte以上是VB中的可以通过
      

  4.   

    声明为function XCOpen (Var
         hCom: integer;
         lsCfgFile: String;
         CfgItemName:string
         ):Integer; Stdcall;external 'XCRF500API.dll'
      

  5.   

    有过这样的声明,不过DELPHI出现的是
    the actual and formal parameter must be identical这样的提示,句柄就不能为负的吗?
    请大家指点一二
      

  6.   

    VAR HCOM :HWND;  
    BEGIN 
        hCom:=-1;
        showmessage(inttostr(hCom));
        aStatus := XCOpen(hCom, 'SYSIT.CFG', 'XCRF-500W SCANER');
    END;hcom不可以为负的,
    改成INTEGER,出现TWO PARAMETER MUST BE IDENTICAL的提示
      

  7.   

    声明为function XCOpen (
         hCom: Pinteger;
         lsCfgFile: String;
         CfgItemName:string
         ):Integer; Stdcall;external 'XCRF500API.dll'
      

  8.   

    谢谢,不过还是会出现:incomptable types的提示.
    当反HCOM=-1时
      

  9.   

    hCom := Cardinal(-1);
    ...
      

  10.   

    谢谢,还是不行,
    因为它是HWND,它的-1也就是497865754712
    还会产生那种错误
    请问CARDINAL是什么意思呢
      

  11.   

    delphi中还有一个句柄类型thandle,它可以赋-1值这是delphi中对hwnd的解释
    Use HWND for Windows API calls that require a window handle. Use HWND instead of the Handle property when working with TWebBrowser controls.我在delphi7中编译
    var hcom :THandle;
    hCom:=Cardinal(-1);
    通过希望以上的对你有用