Q&A

  • TextFile사용중 Append문장에서 에러가 납니다.
아래 소스에서 Append(TxtFile)라는 메소드에서 에러가 발생합니다. 에러내용이 메시지로 File Not Found라는 문구로 메시지가 나옵니다.
도대체 어떤 문제가 있는 것일까여! ㅡ,ㅡ 함 봐주세용!
참고 : Rewrite 라는 것도 안됩니다. 혹시나하는 맘에 함해봤는데..
       로그이기때문에 내용은 계속 추가로 저장이 되어야하는데...

procedure TMainForm.log(msg : String);
var
   TxtFile: TextFile;
begin
   if not FileExists('C:\temp\log-'+DateToStr(Date)+'.txt') then begin
      log_text.Lines.SaveToFile(C:\temp\log-'+DateToStr(Date)+'.txt');
   end;
   AssignFile(TxtFile, C:\temp\log-'+DateToStr(Date)+'.txt');
   Append(TxtFile);
   Writeln(TxtFile, DateTimeToStr(Now)+' '+msg);
   CloseFile(TxtFile);
end;
4  COMMENTS
  • Profile
    구창민 2004.12.22 02:17
    안녕하세요..

    전혀 문제가 없어보입니다..

    다만, 아래 입력하실때 실수로 홑따옴표가 빠진 부분이 있는데

    컴파일 오류날 것이고, 코드 자체로는 문제가 없어 보입니다.

    참고로 제가 사용하는 오류 로그 기록 코드를 올립니다.

    참고하시고, 즐거운 프로그래밍 하세요~

    procedure LogPrint(ErrorMsg: string);
    var
      FileName : string;
      LogFile : TextFile;
    begin
      try
        FileName := ChangeFileExt(Application.ExeName, '.log');
        AssignFile(LogFile, FileName);
        if FileExists(FileName) then
          Append(LogFile)
        else
          Rewrite(LogFile);
        Writeln(LogFile, DateTimetoStr(Now) + ':' + ErrorMsg);
      finally
        Closefile(LogFile);
      end;
    end;



  • Profile
    김현철 2004.12.22 04:47
    알려주신 코드로 재 수정했습니다.
    ----------------------------------------------------------------------
    procedure TMainForm.log(msg : String);
    var
      FileName : string;
      LogFile : TextFile;
    begin
      try
        FileName := ChangeFileExt('C:\temp\log-'+DateToStr(Date), '.txt');
        AssignFile(LogFile, FileName);
        if FileExists(FileName) then begin
           Append(LogFile);
        end
        else begin
           Rewrite(LogFile);
           Writeln(LogFile, log_text.Text);
        end;
        log_text.Lines.Add(msg);
        Writeln(LogFile, DateTimetoStr(Now) + ':' + msg);
      except
        Closefile(LogFile);
      end;
    end;
    --------------------------------------------------------------------
  • Profile
    구창민 2004.12.23 01:35
    쩝.. 작성하신 코드를 보면 except 안에 CloseFile 문장이 기술되어있네요..

    Except 와 Finally 의 차이는 아실텐데.. 실수하신 듯 보이네요

    그리고 말씀하신 것 처럼 에러 코드는 내용에 있지 않습니다.

    참고로, 간단히 테스트 한 코드를 올려드립니다.

    즐거운 프로그래밍 하세요..

    procedure log(msg : String);
    var
      FileName : string;
      LogFile : TextFile;
    begin
      try
        FileName := ChangeFileExt('C:\temp\log-'+DateToStr(Date), '.txt');
        AssignFile(LogFile, FileName);
        if FileExists(FileName) then begin
          Append(LogFile);
        end
        else
        begin
          Rewrite(LogFile);
          Writeln(LogFile, msg);
        end;
        Writeln(LogFile, DateTimetoStr(Now) + ':' + msg);
      finally
        Closefile(LogFile);
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
    begin
      for i := 0 to 100 do
      begin
        log(IntToStr(i));
      end;
    end;





  • Profile
    김현철 2004.12.23 02:20
    지금 제가 격고있는 문제가 참으로 설명하기 가 힘이 듭니다.
    이번에 님이 적어주신 그대로 사용을 했구여! 그러나 역시 에러가 나구여!
    이번건을 해결하기 위해서는 소스를 오픈해야할거 같아여! 그러나 그러기에는 좀..... 물론 적어주신 코드또한 완벽한 코드입니다. 당연에러가 발생하지않구여! 물론 제가 해두... 근데 제가 개발중이던 소스에 적용을 하면 에러가 납니다.File Not Found라는... 이번건은 잠정적으로 결론을 제 소스로직상에 문제가 있어 보입니다. 로그를 핸들링하는곳이 너무나도 불규칙하게 발생하고,
    그래서 개발을... 로직을 다시 세워서 다시 개발하기로했습니다.
    개발이래 이렇게 개념없는 코딩을해서 참으로 쪽팔리기도하네여! ㅡ.ㅡ
    결론 - Event의 로직구성이 너무 개념없이 코딩하다보니..구현 프로세스상에 문제가 있는것으로 추정이 됩니다. 그래서 자신을 질책하고 다시 개발을 할것입니다.
    ------------ 관심을 가져주셔서 고맙습니다. ---------------