type  RecType=record
          ...
      end;
 
      arRec=array[1..100] of RecType;var 
  f:file of Rectype;
  r:RecType;
  i:integer;
  ar:arRec;   //结构数组保存到文件:
assignfile(f,'filename');
rewite(f);
for i:=1 to 100 do write(f,ar[i]);
closefile(f);从文件中读取:
assignfile(f,'filename');
reset(f);
for i:=1 to 100 do read(f,ar[i]);
closefile(f);

解决方案 »

  1.   


    郑重建议:
        不要用assignfile这样原始的函数,而应当用
        文件流 TFileStream,方便,容易。
      

  2.   

    to “吾爱是Yaya”:请你用TFileStream写一个解决上述问题试试!候教了。
      

  3.   

      to chengshirong:
      assignfile(  )前面是不是要用openjfile,我在定义f:file of Rectype的时候,运行出错:[Error] main.pas(33): Type 'Tuserlist' needs finalization - not allowed in file type;我不知道什么原因?谢谢!
      

  4.   

    To Musicwind(吾爱是Yaya!):
     AssignFile有什么不妥吗?我一直用它啊
      

  5.   

    to  (jasmine): 直接使用就可以了。下面是一个小例子:
    procedure TForm1.Button1Click(Sender: TObject);
    type
      PointType = record
         x,y : integer;
      end;
      RecArr = array[1..10] of PointType;
    var a,b:RecArr;
        f:file of PointType;
        i:integer;
    begin
      for i:=1 to 10 do
      begin
        a[i].x:=i; a[i].y:=i*i;
      end;
      AssignFile(f,'tmp.rec');
      rewrite(f);
      for i:=1 to 10 do write(f,a[i]);
      Closefile(f);  AssignFile(f,'tmp.rec');
      reset(f);
      for i:=1 to 10 do
      begin
        read(f,b[i]);
        Memo1.Lines.Add(Format('%10d%10d',[b[i].x,b[i].y]));
      end;
      Closefile(f);
    end;当然,你可以将type定义放在单元的接口部分(interface),或者说放在implementation的上面
      

  6.   

    to chengshirong:
       我的程序如下: 
    type
    Tuserlist=record
            username      :string;
            passwd        :string;
            localaddress  :string;
        end;
     userlistarr = array[1..100] of Tuserlist;
     public
        { Public declarations }
        userlist   :userlistarr;
    var
         fuserlist  :file of Tuserlist;
    procedure TForm1.FormCreate(Sender: TObject);
    var
         i:    integer;
    begin
       assignfile(fuserlist,'d:/editing/editing(1)/editing/userlist');
       reset(fuserlist);
       for i:=1 to 100 do
       begin
          read(fuserlist,userlist[i]);
       end;
       closefile(fuserlist);
    end;
    运行时老是报::[Error] main.pas(33): Type 'Tuserlist' needs finalization - not allowed in file type(在f:file of PointType;一句);不知为什么?请帮忙看看,谢谢!
        
      

  7.   

    请将记录定义改为:
    type
    Tuserlist=record
            username      :string[20];
            passwd        :string[20];
            localaddress  :string[80];
        end;
    即可顺利运行。
    这里,必须指定字串的最大长度string[n], n介于[1..255]可根据需要指定n值。
      

  8.   

    to chenshirong:
       不好意思,再麻烦你一下:如何判断上面所说的文件是否结束(.eof好像不行),因为我要想知道文件中到底放了多少个数组的项。谢谢!
      

  9.   

    用FileSize(f)函数,如
      for i:=1 to filesize(f) do read(f,rec[i]);
    同时你可参考 filepos(f)函数