ファイル

テキストファイル

テキストファイルを扱うには,定義済のファイル型 text を用います。

次のプログラムは,テキストファイル hoge.txt の内容をコンソールに出力する例です。

program sample(f, output);
var
  f : text;
  buf : string(256);
begin
  assign(f, 'hoge.txt');
  reset(f);      { ファイルを読み込み用に開く }
  while not eof(f) do
  begin
    readln(f, buf);
    writeln(buf)
  end;
  close(f)
end.

ファイルを読み込み用に開くには,assign 手続きでファイル名を指定した後,reset 手続きでファイルを開きます。
ファイルを閉じるには close 手続きを呼び出します。

手続き readln は,第 1 引数にファイルを指定すると,そのファイルからの読み込みを行います。

次のプログラムは,テキストファイル hoge.txt にサンプルテキストを書き込むプログラムです。

program sample(f);
var
  f : text;
begin
  assign(f, 'hoge.txt');
  rewrite(f);      { ファイルを書き込み用に開く }
  writeln(f, 'This is some sample text.');
  close(f)
end.

ファイルを書き込み用に開くには,reset 手続きの代わりに rewrite 手続きを呼び出します。

writeln 手続きも readln と同様,第 1 引数にファイルを指定すると,そのファイルへの書き込みを行います。

一般のファイル型

一般のファイル型は file of 成分型 と書きます (書き下した型定義は不可)。
例えば,実数型のファイルを扱うには file of real と書きます。

次のプログラムは,実数型のファイルに実数 1/1, 1/2, ..., 1/5 を書き込むする例です。

program sample(f);
var
  f : file of real;
  i : integer;
begin
  assign(f, 'hoge.dat');
  rewrite(f);
  for i := 1 to 5 do
  begin
    f^ := 1 / i;
    put(f);
  end;
  close(f)
end.

ファイルのバッファ (バッファ変数) にアクセスするには f^ と書きます。
書き込み中のファイルのバッファ変数を更新 (書き込み位置を移動) するには put 手続きを呼び出します。

次のプログラムは,実数型のファイル hoge.dat の内容を読み込んで,コンソールに出力するものです。

program sample(f, output);
var
  f : file of real;
  n : real;
begin
  assign(f, 'hoge.dat');
  reset(f);
  while not eof(f) do
  begin
    n := f^;
    writeln(n:0:2);
    get(f);
  end;
  close(f)
end.
1.00
0.50
0.33
0.25
0.20

読み込み中のファイルのバッファ変数を更新 (読み込み位置を移動) するには,put 手続きの代わりに get 手続きを呼び出します。