お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"ファイルの同時アクセスに制限をかける"





 複数のプロセスからアクセスされうるテキストファイルに対して,排他制御
(早い物勝ちで書込権を取る)をかける例です.
StringsにはあらかじめTStringListを生成して保持しておきます.
読込が成功すると,TextはStrings.STrings[i]に1行づつ入っています.

var DataStream: TFileStream;
    Strings: TStringList;
    ReadOnly: boolean;

procedure TDataModule1.OpenDataFile( FileName:string );
begin
  //// データ格納先のクリア
  Strings.Clear;
  if FileExists(FileName) then begin
    DataStream.Free;
    try     //////// file exists
      DataStream :=
        TFileStream.Create( FileName,
                            fmOpenReadWrite or fmShareDenyWrite);
      Strings.LoadFromStream(DataStream);
      ReadOnly := False;
    except  /////// readOnly
      DataStream :=
        TFileStream.Create( FileName,
                            fmOpenRead or fmShareDenyNone);
      ShowMessage('読み出し専用で開きます');
      try
        Strings.LoadFromStream(DataStream);
        ReadOnly := True;
      except
        MessageDlg(FileName + ' の読込に失敗しました',
                   mtError, [mbOk], 0);
        DataStream.Free;
        DataStream := nil;
      end;
    end;
  end else begin
    MessageDlg(FileName + ' が存在しません',
                   mtError, [mbOk], 0);
  end;
end;


                                                  TN(CQJ01721)

Original document by TN            氏 ID:(CQJ01721)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum