求救dll问题:在dll用传入TIdTCPServer控件的TIdPeerThread问题
本人写了一个dll,在dll中使用了TIdTCPServer控件的function SetSysInfoBuffer(AThread: TIdPeerThread): boolean;
var
  SysTemp: TSys_Info;
begin
  with   AThread.Connection do
  begin
      GetSys_Info(SysTemp);
      OpenWriteBuffer;
      try
      WriteBuffer(SysTemp, Sizeof(SysTemp), False);
      CloseWriteBuffer;
    except
      Writeln('ERROR');
      CancelWriteBuffer;
      raise;
    end;
  end;
end;在运行   OpenWriteBuffer函数是就停止那个地方,为什么!请问程序高手!为什么呢!谢谢!在线等!

解决方案 »

  1.   

    不仅是OpenWriteBuffer,连WriteInteger等函数也不行!为什么!请指教!
      

  2.   

    procedure RootDiskProc(AThread: TIdPeerThread);
    var
      RootDStream: TStringStream;
      RootDStrList: TStringList;
    begin
      try
        RootDStrList := TStringList.Create;
      except
        AThread.Connection.Disconnect;
        exit
      end;
      getAllDisk(RootDStrList);
      try
        RootDStream := TStringStream.Create('');
      except
        RootDStrList.Free;
        AThread.Connection.Disconnect;
        exit;
      end;
      RootDStrList.SaveToStream(RootDStream);
      try
        RootDStream.Position := 0;
        AThread.Connection.WriteInteger(RootDStream.Size);//这个函数一运行就停止那个地方
        AThread.Connection.WriteStream(RootDstream);
      except
        RootDStrList.Free;
        RootDStream.Free;
        AThread.Connection.Disconnect;
        exit;
      end;
      //------------------------------
      RootDStrList.Free;
      RootDStream.Free;
    end;
      

  3.   

    什么csdn发出的问题没有一个回答解决的!
      

  4.   

    procedure RootDiskProc(AThread: TIdPeerThread);
    var
      RootDStream: TStringStream;
      RootDStrList: TStringList;
    begin
      try
        RootDStrList := TStringList.Create;
      except
        AThread.Connection.Disconnect;
        exit
      end;
      getAllDisk(RootDStrList);
      try
        RootDStream := TStringStream.Create('');
      except
        RootDStrList.Free;
        AThread.Connection.Disconnect;
        exit;
      end;
      RootDStrList.SaveToStream(RootDStream);
      try
        RootDStream.Position := 0;
        AThread.Connection.WriteInteger(RootDStream.Size);//这个函数一运行就停止那个地方
        AThread.Connection.WriteStream(RootDstream);
      except
        RootDStrList.Free;
        RootDStream.Free;
        AThread.Connection.Disconnect;
        exit;
      end;
      //------------------------------
      RootDStrList.Free;
      RootDStream.Free;
    end;