熟悉流操作的进来帮小弟我看下,代码异常在哪里

熟悉流操作的进来帮我看下,代码错误在哪里
大家帮我看下这段代码错误在哪里,莫名其妙的


  var
    stream,Stream2:TStream;
    Buffer: Pointer;
    size:integer;
    fn:String;
begin
   fn:='001.txt';
   if FileExists(fn) then
   begin
     Stream := TFileStream.Create(fn, fmOpenRead);
     size:=stream.Size;
     inc(size);
     getmem(buffer,size);
     stream.Position := 0;
     stream.ReadBuffer(Buffer^,Size);  //这里报错:Stream read error 要怎么修改才对啊?
     .....
   end

------解决方案--------------------
最近缺分用,说说错误原因吧:

  var
    stream,Stream2:TStream;
    Buffer: Pointer;
    size:integer;
    fn:String;
begin
   fn:='001.txt';
   if FileExists(fn) then
   begin
     Stream := TFileStream.Create(fn, fmOpenRead);
     size:=stream.Size; //流的大小是固定的
     inc(size); //然后您让它递增变大
     getmem(buffer,size);
     stream.Position := 0;
     stream.ReadBuffer(Buffer^,Size);  //当然读取就出错了
     .....
   end

读取文本可以简化成:
var
  MS: TMemoryStream; //内存流
  SR: String;
begin
  SR := '001.txt';
  if FileExists(SR) then
  begin
    MS := TMemoryStream.Create; //创建流
    MS.LoadFromFile(SR); //加载
    SR := '';
    SetLength(SR, MS.Size); //设置大小
    MS.Read(SR[1], Length(SR)); //读取
    //然后您自己使用SR
    MS.Free; //释放
  end;
end;