delphi.gif (306 バイト) ファイルの操作


ファイル操作には、主に

がありますが、Delphiらしい方法はもちろんTFileStreamを使用する方法です。しかし、クラシックな方法も便利なときがあるので、ここでは両方について説明します。

 

delphi1.gif (322 バイト)クラシックな方法

toach.gif (917 バイト) ファイルを開くには

ファイルを読み出し用に開くには、AssignFileとReset手続きを使います。

var
f: Text;
....
AssignFile(f, 'TEXT1.TXT');
Reset(f);
....

ファイルを書き込み用に開くには、AssignFileとRewrite手続きを使います。

  var
     f: Text;
  ....
  AssignFile(f, 'TEXT1.TXT');
  Rewrite(f);
  ....

toach.gif (917 バイト) ファイルを閉じるには

ファイルを閉じるにはCloseFile手続きを使用します。

   CloseFile(f); 

toach.gif (917 バイト) テキストファイルを読み書きするには

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.

toach.gif (917 バイト) バイナリファイルを読み書きするには

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.

 

delphi1.gif (322 バイト) 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.