这种情况下不要用fsSend.Free;
除非你每次都create一个fssend
把fsSend.Free;这一句去掉看看结果

解决方案 »

  1.   

    我调试了程序运行到              fsSend.Read(bufSend^,iBYTEPERSEND);
    都出错
      

  2.   

    是不是bufSend取得的数据为空呢?
      

  3.   

    先执行了 
        fsSend:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
        GetMem(bufSend,iBYTEPERSEND+1);
        if (fsSend.Position+1+iBYTEPERSEND) < fsSend.Size then
        begin
              fsSend.Read(bufSend^,iBYTEPERSEND);
              Socket.SendBuf(bufSend^,iBYTEPERSEND);
              fsSend.Free;
        end
        else打开了一个文件,不可能为空三
      

  4.   

    fyje(冬原) (  ) :
        你就帮帮我吧
      

  5.   

    Aarcon_Chen(凌霄) 
       我变得是一个文件传输,服务器在win2000
       客户端win98
      

  6.   

    GetMem(bufSend,iBYTEPERSEND+1);iBYTEPERSEND被设为2048
      

  7.   

    if (fsSend.Position+1+iBYTEPERSEND) < fsSend.Size then这一句不会有错吧?
      

  8.   

    下面这段代码运行正常, 你不妨对照自己的分析分析
    var Buf: PChar;
    begin
      GetMem(Buf, 2048);
      ZeroMemory(Buf, 2048);
      with TFileStream.Create('k:\test.txt', fmOpenRead) do
      try
        Read(Buf^, 100);
        ShowMessage(String(Buf));
      finally
        Free;
        FreeMem(Buf);
      end;
    end;