ファイルの操作
ファイル操作には、主に
がありますが、Delphiらしい方法はもちろんTFileStreamを使用する方法です。しかし、クラシックな方法も便利なときがあるので、ここでは両方について説明します。
ファイルを開くには
ファイルを読み出し用に開くには、AssignFileとReset手続きを使います。
var
f: Text;
....
AssignFile(f, 'TEXT1.TXT');
Reset(f);
....
ファイルを書き込み用に開くには、AssignFileとRewrite手続きを使います。
var f: Text; .... AssignFile(f, 'TEXT1.TXT'); Rewrite(f); ....
ファイルを閉じるには
ファイルを閉じるにはCloseFile手続きを使用します。
CloseFile(f);
テキストファイルを読み書きするには
readln,writeln手続きを使用します。
Sample1: readln
{ テキストファイルの読み込み } program TextRead; uses SysUtils; {$APPTYPE CONSOLE} var f: Text; buffer: string[255]; begin AssignFile(f, 'TEXT1.TXT'); Reset(f); while not Eof(f) do begin readln(f, buffer); writeln(buffer); end; CloseFile(f); end.
Sample2: writeln
{ ファイルへの書き込みサンプル } program TextWrite; uses SysUtils; {$APPTYPE CONSOLE} var f: Text; begin AssignFile(f, 'TEXT2.TXT'); Rewrite(f); writeln(f, '1. Hello world!'); writeln(f, '2. Hello world!'); writeln(f, '3. Hello world!'); writeln(f, '5. Hello world!'); writeln(f, '6. Hello world!'); CloseFile(f); end.
バイナリファイルを読み書きするには
read,write手続きを使用します。
Sample1: read
{ バイナリーファイルの読み込みサンプル } program BinRead; uses SysUtils; {$APPTYPE CONSOLE} type IntFile = file of Integer; var f: IntFile; v: Integer; begin AssignFile(f, 'FILE1.BIN'); Reset(f); Read(f, v); writeln('Value[0] = ', v); Read(f, v); writeln('Value[1] = ', v); Read(f, v); writeln('Value[2] = ', v); CloseFile(f); end.
Sample2: write
{ バイナリーファイル書き込みサンプル } program BinWrite; uses SysUtils; {$APPTYPE CONSOLE} type IntFile = file of Integer; var f: IntFile; i: Integer; begin AssignFile(f, 'FILE2.BIN'); Rewrite(f); for i := 0 to 255 do write(f, i); CloseFile(f); end.
TFileStreamを使用する方法
TFileStreamはVCLの非ビジュアルコンポーネントです。
{ TFileStreamの使用例 =================== } program FileStreamTest; uses SysUtils, Classes; {$APPTYPE CONSOLE} const FileName = 'TEXT1.TXT'; type TMyBuffer = array[0..255] of Char; TMyBufferPointer = ^TMyBuffer; var fs: TFileStream; buffer: TMyBufferPointer; n: LongInt; m: LongInt; begin writeln('TFileStreamの使用例'); fs := TFileStream.Create(FileName, fmOpenRead); n := fs.Size; if n < 256 then begin New(buffer); m := fs.Read(buffer^, n); writeln('m = ', m); writeln(buffer^); end; Dispose(buffer); fs.Free; end.