J
jackiedragon
Unregistered / Unconfirmed
GUEST, unregistred user!
有VC编成的DLL中有一函数,原型如下:
typedef long HEKEY;
DWORD XC_ConnectEkey(
IN DWORD dwPort,
OUT HEKEY *phEkey
);
其中,IN表示传入的参数,OUT表示将输出的参数(将改变它的值),dwPort表示端口号,phEkey表示指HEKEY句柄的指针。
现在我在Delphi要调用该函数,代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Function XC_ConnectEkey( port: Integer;var hEkey:THandle): Integer ;
stdcall;
var
Form1: TForm1;
implementation
Function XC_ConnectEkey;external'xcsp_eclib.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
port:integer;
hEkey:THandle;
RetCode:integer;
begin
for port:=0 to 7do
//port取值为0..7
begin
RetCode:=XC_ConnectEkey(port,hEkey);
if RetCode=0 then
begin
Application.MessageBox('Ekey已连接上','信息框',MB_OK+MB_ICONINFORMATION);
break;
end
end;
end;
end.
上面的程序能够正确运行,但在程序运行结束时出现异常而出错。
我感到主要是第二个参数的类型出错了,上面代码是用的THandle类型,我还试过lonint类型,但都程序运行结束时出现异常而出错,应该设置第二个参数的类型?请高手指点?非常感谢
(Function XC_ConnectEkey( port: Integer;var hEkey:^THandle): Integer ;
stdcall;编译通不过
Function XC_ConnectEkey( port: Integer;var hEkey:^Longint): Integer ;
stdcall;编译通不过)
typedef long HEKEY;
DWORD XC_ConnectEkey(
IN DWORD dwPort,
OUT HEKEY *phEkey
);
其中,IN表示传入的参数,OUT表示将输出的参数(将改变它的值),dwPort表示端口号,phEkey表示指HEKEY句柄的指针。
现在我在Delphi要调用该函数,代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Function XC_ConnectEkey( port: Integer;var hEkey:THandle): Integer ;
stdcall;
var
Form1: TForm1;
implementation
Function XC_ConnectEkey;external'xcsp_eclib.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
port:integer;
hEkey:THandle;
RetCode:integer;
begin
for port:=0 to 7do
//port取值为0..7
begin
RetCode:=XC_ConnectEkey(port,hEkey);
if RetCode=0 then
begin
Application.MessageBox('Ekey已连接上','信息框',MB_OK+MB_ICONINFORMATION);
break;
end
end;
end;
end.
上面的程序能够正确运行,但在程序运行结束时出现异常而出错。
我感到主要是第二个参数的类型出错了,上面代码是用的THandle类型,我还试过lonint类型,但都程序运行结束时出现异常而出错,应该设置第二个参数的类型?请高手指点?非常感谢
(Function XC_ConnectEkey( port: Integer;var hEkey:^THandle): Integer ;
stdcall;编译通不过
Function XC_ConnectEkey( port: Integer;var hEkey:^Longint): Integer ;
stdcall;编译通不过)