我用这样的格式写入字符串:字符串1的长度(2个字节存放),字符串1;字符串2的长度(2个字节存放),字符串2 ... 。写入用下面的程序:现在只写入一个的情况.
var 
  ArticleName:string;
  Namesize:word;
  Target:TFileStream;
begin    
  Target:=TFileStream.Create('c:\a.dat',fmOpenWrite or fmCreate);
  Target.WriteBuffer(length(ArticleName),Sizeof(Namesize));
  Target.WriteBuffer(PChar(ArticleName)^,length(ArticleName));
end;读出如何读出字符串,
var 
  ArticleName:string;
  Namesize:word;
  Source:TFileStream;
begin
  Source.ReadBuffer(Namesize,sizeof(Namesize));
  该读出下面Namesize个字节,赋值给ArticleName;
  我该如何写,直演示一个字符串就行了。答对分数全给你!

解决方案 »

  1.   

    以下测试通过。对于存多个串你自己依此不难得到答案
    procedure TForm1.WriteClick(Sender: TObject);
    var
      ArticleName:string;
      NameSize:Integer;
      Target:TFileStream;
    begin//写入文件
      Target:=TFileStream.Create('d:\a.dat',fmOpenWrite or fmCreate);
      try
        ArticleName:='I love you baby!';
        NameSize:=Length(ArticleName);
        Target.WriteBuffer(PChar(IntToStr(NameSize))^,Sizeof(NameSize));
        Target.WriteBuffer(PChar(ArticleName)^,NameSize);
      finally
        Target.Free;
      end;
    end;procedure TForm1.ReadClick(Sender: TObject);
    var
      ArticleName:string;
      NameSize:Integer;
      Source:TFileStream;
    begin//读出来内容
      Source:=TFileStream.Create('d:\a.dat',fmOpenRead);
      try
        SetLength(ArticleName,SizeOf(NameSize));
        Source.ReadBuffer(ArticleName[1],SizeOf(NameSize));
        NameSize:=StrToInt(ArticleName);
        ArticleName:='';
        SetLength(ArticleName,NameSize);
        Source.Seek(SizeOf(NameSize),soFromBeginning);
        Source.ReadBuffer(ArticleName[1],NameSize);
        ShowMessage(ArticleName);
      finally
        Source.Free;
      end;
    end;