我先用Tfilestream从xx.xml文件读出数据,然后赋给buffer,再从buffer赋给Tmemorystream,就会出错“Stream write error”是什么原因?
代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var
    stream,Stream2:TStream;
    Buffer: Pointer;
    size:integer;
begin
if OpenDialog1.Execute then
begin
  stream2:=  TMemoryStream.Create;
  Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  size:=stream.Size;
  inc(size);
  getmem(buffer,size);
  stream.writebuffer(Buffer^,Size);
  stream2.readbuffer(Buffer^,size);
  cds.LoadFromStream(stream2);
end;
end;

解决方案 »

  1.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
        stream,Stream2:TStream;
        Buffer: Pointer;
        size:integer;
    begin
    if OpenDialog1.Execute then
    begin
      stream2:=  TMemoryStream.Create;
      Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
      size:=stream.Size;
      inc(size);
      getmem(buffer,size);
      stream.Position := 0;
      stream.ReadBuffer(Buffer^,Size);
      stream2.Position := 0;
      stream2.WriteBuffer(Buffer^,size);
      cds.LoadFromStream(stream2);
    end;
    end;
      

  2.   

    stream2.readbuffer(Buffer^,size);
      stream2.Position := 0; //加這句試下
      cds.LoadFromStream(stream2);
      

  3.   

    问题解决,我试过了用stream2.seek(0,sofrombeginning);也可以等效于stream2.Position := 0