var
  ms : TMemoryStream;
  writer : TWriter;
  Reader : TReader;
  ms2,ms3 : TMemoryStream;
  mysize : integer;
begin
  if not OpenDialog1.Execute then exit;
  edit2.Text := OpenDialog1.FileName;
  ms := TMemoryStream.Create;
  writer := TWriter.Create(ms,$ff);
  //1.写入值
  writer.writeinteger(100);
  //写入文件
  ms2 := TMemoryStream.Create;
  ms2.LoadFromFile(Edit2.Text);
  ms2.Position := 0;
  writer.writeinteger(ms2.Size);
  writer.Write(ms2.Memory^,ms2.Size);
  writer.WriteString('200');
  writer.WriteString('200');
  writer.WriteString('200');
  writer.WriteString('200');
  //2.取出值
  ms.Position := 0;
  Reader := TReader.Create(ms,$ff);
  showmessage(inttostr(reader.ReadInteger));
  ms3 := TMemoryStream.Create;
  mysize := Reader.ReadInteger;
  ms3.SetSize(mysize);
  reader.Read(ms3.Memory^,mysize);
  //上面这句出错,如改为下面则Rader,ReadStirng出错。
  //ms3.WriteBuffer(reader,mysize);
  //Reader.Position := Reader.Position + mysize;  Reader.ReadString;
  Reader.ReadString;
  Reader.ReadString;
  Reader.ReadString;
  ms.Free;
  ms2.Free;
  ms3.Free;
end;