|
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
|