2015-02-12 78 views
0

我做實驗室工作,我需要通過一定的算法轉換原始文件。這裏是我的代碼:爲什麼沒有工作擦除和重命名?

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

因爲你的操作之前關閉這些文件。 – TLama 2015-02-12 08:01:30

+0

必須先關閉文件**,然後才能將其擦除或重命名(請參閱下面的答案)。 ''Erase()''和''Rename''是強制性的,不要打開它們。 – user1438038 2015-02-12 08:15:21

+1

@ user1438038,爲true,但關閉*取消分配*。這是我的觀點。 – TLama 2015-02-12 12:33:59

回答

2

請確保您的文件不被任何應用程序打開。從FreePascal文檔:

擦除從磁盤中刪除未打開的文件。應該爲文件分配分配,但不打開復位或重寫。

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. 
相關問題