请大家帮我解释一下下面的代码越细越好,或者有什么错误 怎么改正,大家费心了
procedure streamopreate();
var
  stm:TFileStream;
  i, l, n: Integer;
  s: string;
begin
  stm := tfilestream.create(extractfilepath(paramstr(0))+'emails\'+file+'.dat', fmOpenRead);
  try
    stm.readbuffer(n, sizeof(integer));
    for i := 0 to n - 1 do
    begin
      stm.readbuffer(l, sizeof(integer));
      setlength(s, l);
      if l > 0 then
        stm.readbuffer(s[1], l);
      add(s);
    end;
  except
  end;
end;

解决方案 »

  1.   

    文件存的是n个字符串
    将这n个字符串从文件中读出来
    然后进行操作(add(s));
      

  2.   

    procedure streamopreate();
    var
      stm:TFileStream;  定义一个流文件
      i, l, n: Integer;
      s: string;
    begin
      stm := tfilestream.create(extractfilepath(paramstr(0))+'emails\'+file+'.dat', fmOpenRead); //创建流文件,extractfilepath得到文件的路径,paramstr从命令行返回制定的参数(paramstr(0)返回文件路径和文件名)
      try  //异常的开始
        stm.readbuffer(n, sizeof(integer));读缓冲取区的数据流
        for i := 0 to n - 1 do  //循环
        begin
          stm.readbuffer(l, sizeof(integer)); 
          setlength(s, l);//为数组分配长度
          if l > 0 then
            stm.readbuffer(s[1], l);
          add(s);  //增加字符串
        end;
      except   //异常的处理
      end;
    end;