我有一个VC++编写的DLL.VC++函数原型如下:
extern "C" LONG PASCAL EXPORT ReadAllRecord(HANDLE hCom,BYTE DevNo,BYTE RecordType,
LPDWORD pRecordCout)调用该函数后,需要得到pRecordCout的值。我在Delphi中的调用如下:
function ReadAllRecord(hcom:THandle;DevNo:Byte;RecordType:Byte;
pRecordCount:LPDWORD):Integer;stdcall;external 'JS168Comm.dll' name 'ReadAllRecord';
调用后,其他都正常。就是当我在代码里试图获取pRecordCount值时。系统给出错误提示:
Access violation at address 1000236C in module 'JS168Comm.dll'. Write of address 00000000.
extern "C" LONG PASCAL EXPORT ReadAllRecord(HANDLE hCom,BYTE DevNo,BYTE RecordType,
LPDWORD pRecordCout)调用该函数后,需要得到pRecordCout的值。我在Delphi中的调用如下:
function ReadAllRecord(hcom:THandle;DevNo:Byte;RecordType:Byte;
pRecordCount:LPDWORD):Integer;stdcall;external 'JS168Comm.dll' name 'ReadAllRecord';
调用后,其他都正常。就是当我在代码里试图获取pRecordCount值时。系统给出错误提示:
Access violation at address 1000236C in module 'JS168Comm.dll'. Write of address 00000000.
var
p:LPDWORD;
r:Integer;
t:THandle;
i:Byte;
begin
t:=Application.Handle;
r:=ReadAllRecord(t,1,0,p);
end;
改一下:
p:DWord;
r:=ReadAllRecord(t,1,0,@p);
p:LPDWordgetmem(p,sizeof(DWOrd));
r:=ReadAllRecord(t,1,0,p);
我一时把它忘了,没有给Pointer分配。谢谢gzmhero(hihihi)