Q&A

  • 로그파일 저장루틴입니다. IO에러가 간혹 나는경우가 있는데
아래코드 인데요. 이전에는 정상적으로 썼던것으로 기억하는데..
IO 103 ERROR 가 나옵니다.
쓰레드에서 사용해서 파일에 병목이 생기는것은 아니겠지요?
좀더 고급적으로 하는 방법이 없을까요?

    try
        logFileName := MakeLogFileName;
        AssignFile(f, LogFilename);

        {$I-}
        if not SysUtils.FileExists(logFileName) then
            ReWrite(f)
        else
            Append(f);
        {$I+}


        if IOResult = 0 then
        begin
           WriteLn(f, sMsg);
           //    Flush(f); <- 이것때문에 그런건가요?
        end;

    finally

        CloseFile(f);
    end;
================================

부분을 아래와 같이 수정했는데요.
혹시 문제가 생길지요?
IOResult 가 실패하면 CloseFile에서도 에러가 걸리지 않을런지요?


        iFile := IOResult;

        if iFile = 0 then
        begin
            WriteLn(f, sMsg);
             Flush(f);
        end;

    finally
        if iFile = 0 then
        CloseFile(f);
    end;
0  COMMENTS