为什么擦除和重命名不起作用?

时间:2015-02-12 07:56:09

标签: pascal

我做实验室工作,我需要通过某种算法转换原始文件。这是我的代码:

var f1,f2: text;

procedure rounds(var f1, f2: text);
  var a: real;
  begin
    while not EoF(f1) do
      begin
        read(f1, a);
        write(f2, a:0:1, ' ');
      end;
  end;

begin
  assign(f1, './lab.txt');
  reset(f1);
  assign(f2, './temp'); rewrite(f2);
  rounds(f1,f2);
  close(f1);
  close(f2);
  Erase(f1);
  rename(f2, 'lab.txt');
end.

为什么删除的f1和f2没有被重命名? 我只能使用顺序文件

1 个答案:

答案 0 :(得分:2)

确保任何应用程序都不会打开您的文件。从FreePascal文档:

  

Erase从磁盘中删除未打开的文件。文件应使用“重置”或“重写”分配“分配”,但不能打开

Program EraseDemo;

Var MyFile: Text;

begin
  Assign(MyFile, 'demo.txt');
  Rewrite(MyFile);
  Writeln(MyFile, 'Lorem Ipsum dolor est');
  close (MyFile);

  Erase(MyFile);
end.
  

重命名将指定文件F的名称更改为S. 必须指定F,但不能打开。

Program RenameDemo;

Var MyFile: Text;

begin
  Assign(MyFile, paramstr(1));
  Rename(MyFile, paramstr(2));
end.