掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数人からのログファイルの書き込みについて (ID:45610)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Questさん、レスありがとうございます。 > TFileStreamなどで排他制御するのが王道だと思います。 ということで、以下のようなコードでテストプログラムを作成しました。 別PCで起動し、タイマーで適当なログを書き出し、自PCでは Delphi上でブレークしたところ、別PC側では、タイムアウトで 終了してくれました。 fmShareDenyWrite がどのような仕組みなのかよくわかりませんが。 FFileName: ログファイル名 FTimeOut: タイムアウト時間(ミリ秒) 細かいエラートラップとか、チェックは割愛 function WriteLogStream(aLog: String): String; var startcount: Cardinal; stream: TFileStream; begin Result := ''; startcount := GetTickCount; while True do begin try if FileExists(FFileName) then begin stream := TFileStream.Create(FFileName, fmOpenReadWrite or fmShareDenyWrite); end else begin stream := TFileStream.Create(FFileName, fmCreate or fmShareDenyWrite); end; try stream.Position := stream.Size; stream.Write(PChar(aLog)^, Length(aLog)); finally stream.Free; end; Break; except Sleep(100); end; if (GetTickCount - startcount) >= FTimeOut then Break; end; end; あとは、実際の運用環境で、エラーなくストレスなく、書き込みできるか試してみます。 ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.