type
    myRecord= record
      text:shortstring;
      font:Tfont;
    end;
    NoteList = file of Note;

var
  R:MyRecord 
  procedure Tform1.button1.click(sender:Tobject);
var s:integer;
    filename:string;
begin

  mystream:=TFileStream.Create(FileName, fmOpenWrite);
  try
    myStream.Position:=0;
    while true do
    begin
      s:=myStream.Read(R, sizeof(R));
      if s=sizeof(R) then break;
    end;
  finally
    myStream.Free;
  end;

end;在循环里面跳不出来,s始终等于0,不知问题出在哪儿?

解决方案 »

  1.   

    不好意思,帖错了type
        myRecord= record
          text:shortstring;
          font:Tfont;
        end;
        myrecordList = file of myrecord;

    var
      R:MyRecord 
      procedure Tform1.button1.click(sender:Tobject);
    var s:integer;
        filename:string;
    begin

      mystream:=TFileStream.Create(FileName, fmOpenWrite);
      try
        myStream.Position:=0;
        while true do
        begin
          s:=myStream.Read(R, sizeof(R));
          if s=sizeof(R) then break;
        end;
      finally
        myStream.Free;
      end;

    end;
      

  2.   

    首先一个问题是,读取文件应当使用fmOpenRead或者fmOpenReadWrite,这样可以读出数据来,但我发现,读出的数据有问题。
      

  3.   

    试试将相关的两句改成下面
    mystream:=TFileStream.Create(FileName, fmOpenReadWrite);//
     
    if s=0 then break; //