我做实验室工作,我需要通过某种算法转换原始文件。这是我的代码:
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没有被重命名? 我只能使用顺序文件
答案 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.