ファイルの操作
ファイル操作には、主に
がありますが、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.