K
kendingxing
Unregistered / Unconfirmed
GUEST, unregistred user!
在DLL里:
function GetDevState(var stateChar):integer;stdcall; //取端口状态
var
rData : TGetDevStateArray ;
dwRet,dwLen,k,l: DWORD ;
pchar;
s:string;
begin
Result:=0;
try
dwLen := XC_MAX_PORT_NUM * 2 ;
dwRet := XC_GetDevState( rData , @dwLen ) ;//调用其他DLL
if dwRet<> XCR_OK then
begin
Result:=1;
Exit;
end
else
p:= rData;
s:=copy(p,1,8);
state:=pchar(s);
Result:=0;
except
Result:=0;
end;
end;
在程序中直接执行这段代码:
procedure TForm1.Button3Click(Sender: TObject);
var
rData : TGetDevStateArray ;
dwRet,dwLen,k,l: DWORD ;
pchar;
s:string;
begin
try
dwLen := XC_MAX_PORT_NUM * 2 ;
dwRet := XC_GetDevState( rData , @dwLen ) ;
if dwRet<> XCR_OK then
begin
Exit;
end
else
p:= rData;
s:=copy(p,1,8);
memo1.lines.Add(s);
except
end;
end;
如果写在DLL里再调用会出现内存地址错误;
但在程序中直接执行则没有这个错误
内存释放问题还是别的?谢谢
function GetDevState(var stateChar):integer;stdcall; //取端口状态
var
rData : TGetDevStateArray ;
dwRet,dwLen,k,l: DWORD ;
pchar;
s:string;
begin
Result:=0;
try
dwLen := XC_MAX_PORT_NUM * 2 ;
dwRet := XC_GetDevState( rData , @dwLen ) ;//调用其他DLL
if dwRet<> XCR_OK then
begin
Result:=1;
Exit;
end
else
p:= rData;
s:=copy(p,1,8);
state:=pchar(s);
Result:=0;
except
Result:=0;
end;
end;
在程序中直接执行这段代码:
procedure TForm1.Button3Click(Sender: TObject);
var
rData : TGetDevStateArray ;
dwRet,dwLen,k,l: DWORD ;
pchar;
s:string;
begin
try
dwLen := XC_MAX_PORT_NUM * 2 ;
dwRet := XC_GetDevState( rData , @dwLen ) ;
if dwRet<> XCR_OK then
begin
Exit;
end
else
p:= rData;
s:=copy(p,1,8);
memo1.lines.Add(s);
except
end;
end;
如果写在DLL里再调用会出现内存地址错误;
但在程序中直接执行则没有这个错误
内存释放问题还是别的?谢谢