我在调用接口函数时提示:Access violation at address 778206B in module 'ntdll.dll'.Read of address 00000034别人接口函数定义是:int GetPersonInfo(int Flag, int MedKind, char* SysDate, int* AppCode, char* DataBuffer )接口dll是:DBLib.dll我的在程序中的定义是:
type TSiStr=array[0..500]of char; function GetPersonInfo
(
Flag:integer;
MedKind:integer;
SysDate:TSiStr;
AppCode:integer;
var DataBuffer:TSiStr
):integer;stdcall;external 'DBLib.dll'; 之后我调用方法是:
var
Flag:integer;
MedKind:integer;
SysDate:TSiStr;
AppCode:integer;
DataBuffer:TSiStr;
BackNo :integer;
begin
Flag:=1;
MedKind:=1;
ParaStr:=FormatDateTime('YYYYMMDD',Now());
strpcopy(SysDate,ParaStr); //运行结果信息
for i:=0 to 500 do DataBuffer:=' '; BackNo:=GetPersonInfo(Flag,MedKind,SysDate,AppCode,DataBuffer); if(BackNo<>0)then begin
MessageBox
(
Self.Handle,
DataBuffer,
'提示',
mb_Ok+mb_IconWarning
);
Exit;
end;
end;
就在调用BackNo:=GetPersonInfo(Flag,MedKind,SysDate,AppCode,DataBuffer);函数之后提示Access violation at address 778206B in module 'ntdll.dll'.Read of address 00000034注:GetPersonInfo函数是别人接口'DBLib.dll'中的函数,我看不到别人接口中的代码!有劳各位大侠指点一下,非常感谢
type TSiStr=array[0..500]of char; function GetPersonInfo
(
Flag:integer;
MedKind:integer;
SysDate:TSiStr;
AppCode:integer;
var DataBuffer:TSiStr
):integer;stdcall;external 'DBLib.dll'; 之后我调用方法是:
var
Flag:integer;
MedKind:integer;
SysDate:TSiStr;
AppCode:integer;
DataBuffer:TSiStr;
BackNo :integer;
begin
Flag:=1;
MedKind:=1;
ParaStr:=FormatDateTime('YYYYMMDD',Now());
strpcopy(SysDate,ParaStr); //运行结果信息
for i:=0 to 500 do DataBuffer:=' '; BackNo:=GetPersonInfo(Flag,MedKind,SysDate,AppCode,DataBuffer); if(BackNo<>0)then begin
MessageBox
(
Self.Handle,
DataBuffer,
'提示',
mb_Ok+mb_IconWarning
);
Exit;
end;
end;
就在调用BackNo:=GetPersonInfo(Flag,MedKind,SysDate,AppCode,DataBuffer);函数之后提示Access violation at address 778206B in module 'ntdll.dll'.Read of address 00000034注:GetPersonInfo函数是别人接口'DBLib.dll'中的函数,我看不到别人接口中的代码!有劳各位大侠指点一下,非常感谢
(
Flag:integer;
MedKind:integer;
SysDate:pchar;
AppCode:pinteger;
var DataBuffer:pchar
):integer;stdcall;external 'DBLib.dll';
Flag:integer;
MedKind:integer;
ParaStr:String;
AppCode:integer;
DataBuffer:pchar;
BackNo :integer;
begin
Flag:=1;
MedKind:=1;
ParaStr:=FormatDateTime('YYYYMMDD',Now());
getmem(DataBuffer,500)//这个大小你自己定
BackNo:=GetPersonInfo(Flag,MedKind,pchar(ParaStr),@AppCode,DataBuffer);
//最后记得freemem(DataBuffer)
function GetPersonInfo
(
Flag:integer;
MedKind:integer;
SysDate:TSiStr;
AppCode:integer;
var DataBuffer:TSiStr
):integer;cdecl;external 'DBLib.dll';
试试, C/C++默认调用方式