我想用clientsocket发送一个INI格式的文件,以下是我写的一段程序,但是出错,请各位高手帮忙该一下.
 var
   Size: Integer;
   Buffer: PChar;
   Fstream:TMemoryStream;
begin
   Fstream.LoadFromFile(dir+'\RES\MyInfo_IP.INI');//获取INI格式的文件
   Fstream.Position:=0;
   Size:=Fstream.Size;
   GetMem(Buffer, Size);
   Fstream.Read(buffer,size);
   //Buffer[Size] := #0;
   clientsocket1.Socket.Lock;
   try
     clientsocket1.Socket.SendBuf(Buffer^, Size);
   finally
     FreeMem(Buffer);
   end;
end;

解决方案 »

  1.   

    加上
    Fstream := TMemoryStream.Create;
      

  2.   

    在我程序中Fstream是一个全局变量,
    我在formcreate中已经加了Fstream := TMemoryStream.Create;
      

  3.   

    var 
      Size: Integer; 
      Buffer: PChar; 
      Fstream:TMemoryStream; 
    begin 
    这不是个局部变量吗?
    另外,你说报错,抱什么错你也不说说。
      

  4.   

    var 
      Size: Integer; 
      Buffer: PChar; 
      Fstream:TMemoryStream; 
    begin 
    这不是个局部变量吗?
    另外,你说报错,抱什么错你也不说说。
      

  5.   

    参考:var
      strFileSize :string;
      SendStream: TFileStream;
    begin
      Result:=False;
      SendStream := TFileStream.Create(strFileName, fmOpenRead or fmShareDenyWrite);
      try
        strFileSize := IntToStr(SendStream.Size);
        //...
        //if StrRet = Ret_Ready then
        begin
          try
            IdTCPClient.WriteStream(SendStream,True,False, SendStream.Size);
          finally
            SendStream.Free;
          end;
        end;
      finally
        //...
      end;
    end;
      

  6.   


    procedure TForm1.Button1Click(Sender: TObject);
    Var
      FileStream: TFilestream;
      bytRead: char;
      intLoop: integer;
      strRead: array[0..1020] of char;
    Begin
      FileStream := TFilestream.create('c:\Testpan.txt',fmopenread);  try
        //清除Memo1组件的文本内容    
         Memo1.lines.clear;
        filestream.Seek(0, soFromBeginning );
        fileStream.Read(strRead, 1020);
        memo1.Lines.Add(strRead);
        memo1.Lines.Add('================');
        filestream.Seek(0, soFromBeginning );  
        for intLoop :=1 to fileStream.Size do
        begin
          fileStream.ReadBuffer(bytRead,1) ;
          memo1.Text := memo1.Text+ bytRead;
        end;  finally
        FileStream.free; //释放FileStream对象
      end;
    end;