与其他公司程序进行通讯的程序:
Fssj,Jssj为外公司用VC++作的dll函数
本程序为一个dll,由外公司的执行程序A.exe调用
用SendData2函数,A.exe调用几次后A.exe会退出
调试状态下:会停在A.exe内部,错误代码记不太清了:似乎是读写地址错(改一次本程序地址变一次)(溢出?)
function TTjhApp.DealData(Dealv1, Dealv2: Pchar): Integer;
var
MyDsf : TDsf;
Myaddr : array [0..10] of char;
Myfilename : array [0..240] of char;
ret: integer;
function SendData2():integer;// stdcall;
begin
result := Fssj(Dealv1, Dealv2,@myaddr,@Mydsf,nil);
end;
begin
fillmemory(@Mydsf,sizeof(Mydsf),0);
fillmemory(@Myaddr,sizeof(Myaddr),0);
strcopy(Myfilename,'aa');
ret := 0;
ret := Jssj(Dealv1, Dealv2,@myaddr,@Mydsf,@Myfilename);
if ret <> 1000 then
begin
result := -1;
exit;
end;
// ret := Fssj(Dealv1, Dealv2,@myaddr,@Mydsf,nil);//成功
ret := SendData2();//不成功(几次后)
exit;
end;
Fssj,Jssj为外公司用VC++作的dll函数
本程序为一个dll,由外公司的执行程序A.exe调用
用SendData2函数,A.exe调用几次后A.exe会退出
调试状态下:会停在A.exe内部,错误代码记不太清了:似乎是读写地址错(改一次本程序地址变一次)(溢出?)
function TTjhApp.DealData(Dealv1, Dealv2: Pchar): Integer;
var
MyDsf : TDsf;
Myaddr : array [0..10] of char;
Myfilename : array [0..240] of char;
ret: integer;
function SendData2():integer;// stdcall;
begin
result := Fssj(Dealv1, Dealv2,@myaddr,@Mydsf,nil);
end;
begin
fillmemory(@Mydsf,sizeof(Mydsf),0);
fillmemory(@Myaddr,sizeof(Myaddr),0);
strcopy(Myfilename,'aa');
ret := 0;
ret := Jssj(Dealv1, Dealv2,@myaddr,@Mydsf,@Myfilename);
if ret <> 1000 then
begin
result := -1;
exit;
end;
// ret := Fssj(Dealv1, Dealv2,@myaddr,@Mydsf,nil);//成功
ret := SendData2();//不成功(几次后)
exit;
end;
其它:函数说明:Jssj(接受数据),Fssj(发送数据)
您说是在A.exe加错误处理了?
为什么下句在函数SendData2内错,函数SendData2外正确??
result := Fssj(Dealv1, Dealv2,@myaddr,@Mydsf,nil);