与其他公司程序进行通讯的程序:
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;

解决方案 »

  1.   

    我想你是加错误处理了,在消息处理中如果错误处理Try的话有错误会退出程序的,还有参数约定对了吗
      

  2.   

    请仔细,1、不是一次都不成功;2、注意 function SendData2():integer;// stdcall
    其它:函数说明:Jssj(接受数据),Fssj(发送数据)
      

  3.   

    to: u2m(痛并快乐着) 
    您说是在A.exe加错误处理了?
    为什么下句在函数SendData2内错,函数SendData2外正确??
    result := Fssj(Dealv1, Dealv2,@myaddr,@Mydsf,nil);