Q&A

  • 'Cannot create file' 에러메시지창 어떻게 하죠?
project FTPDemo.exe raised exception class EFCreateError with message 'Cannot create file'

Process stopped. Use Step or Run to continue.

컴파일하면 *75>을 가리키면서 위와 같은 메시지가 나타납니다.

겨우 컴파일 하고 프로그램을 실행하면

문제는 프로그램을 맨처음에 실행하면 'Cannot create file'

와 같은 에러메시지창이 뜨는데 이것을 어떻게 하면 되지요?
=====================================================================
unit IdLogDebug;

interface

uses
  Classes,
  IdLogBase,
  IdSocketHandle;

type
  TIdLogDebugTarget = (ltFile, ltDebugOutput, ltEvent);
  TLogItemEvent = procedure(ASender: TComponent; var AText: string) of object;

  TIdLogDebug = class(TIdLogBase)
  protected
    FFilename: string;
    FFileStream: TFileStream;
    FOnLogItem: TLogItemEvent;
    FTarget: TIdLogDebugTarget;
    //
    procedure Log(AText: string); override;
    procedure SetActive(const AValue: Boolean); override;
    procedure SetTarget(const AValue: TIdLogDebugTarget);
  public
    destructor Destroy; override;
  published
    property Filename: string read FFilename write FFilename;
    property OnLogItem: TLogItemEvent read FOnLogItem write FOnLogItem;
    property Target: TIdLogDebugTarget read FTarget write SetTarget;
  end;

implementation

uses
  IdGlobal,
  IdResourceStrings,
  SysUtils;

{ TIdLogDebug }

destructor TIdLogDebug.Destroy;
begin
  Active := False;
  inherited;
end;

procedure TIdLogDebug.Log(AText: string);
var
  s: string;
begin
  if assigned(OnLogItem) then begin
    OnLogItem(Self, AText);
  end;
  case Target of
    ltFile: begin
      FFileStream.WriteBuffer(PChar(AText)^, Length(AText));
      s := EOL;
      FFileStream.WriteBuffer(PChar(s)^, Length(s));
    end;
    ltDebugOutput: begin
      DebugOutput(AText + EOL);
    end;
  end;
end;

procedure TIdLogDebug.SetActive(const AValue: Boolean);
begin
  if AValue then begin
    case Target of
      ltFile:
        if not (csLoading in ComponentState) then begin
          if FileExists(Filename) then begin
            FFileStream := TFileStream.Create(Filename, fmOpenReadWrite);
          end else begin
*75>            FFileStream := TFileStream.Create(Filename, fmCreate);
          end;
          FFileStream.Position := FFileStream.Size;
        end;
    end;
  end else begin
    case Target of
      ltFile: begin
        FreeAndNil(FFileStream);
      end;
    end;
  end;
  inherited;
end;

procedure TIdLogDebug.SetTarget(const AValue: TIdLogDebugTarget);
begin
  if ([csLoading, csDesigning] * ComponentState = []) and Active then
  begin
    raise Exception.Create(RSCannotChangeDebugTargetAtWhileActive);
  end;
  FTarget := AValue;
end;

end.
1  COMMENTS
  • Profile
    irookie 2002.01.25 21:15
    저도 같은 경우가 있었는데...

    원인은)
    FTPDemo.exe라는 파일이 실행이 되고 있는데, 같은 위치에 같은 파일을 만들려고 해서 생기는 오류입니다.

    F9해서 프로그램에 에러가 생겨서 델파이로 돌아오고, 다시 컴파일하고...
    뭐 이런 작업을 반복하다 보면 발생합니다.

    작업표시줄이나, 어디를 뒤져 보아도 파일이 실행되고 있지않다....쩝
    이렇게 생각하실 수 있는데... 아닙니다.
    어딘가에서 실행되고 있습니다.
    작업관리자등을 실행시켜서 process를 함 보세요.

    해결방법)
    1. 델파이를 종료했다가 다시 들어온다.
    2. 프로젝트 옵션 어딘가에 보면 실행파일을 생성할 폴더의 경로를 지정하는 곳이 있습니다. 다른 곳으로 지정하세요.
    3. 논리에러없이 잘 만드세요... --;

    도움이 되었길 바라며......

    그럼, 20000

    -가슴벅찬 그날이 올때까지......-

    -


    • BlueSea
    • 2002.01.25 21:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 배건환
      2002.01.25 21:31
      퀵레포트에 보면 Quick Rep속성 중에 Band에 보면 HasDetail이라는 것이 있습니다. 이것을 True로 해주고 ...
    • 5782_Click
      2002.01.25 21:15
      혹시 Quickrep의 Dataset 속성을 넣어주셨는지여...
    • 브래드
    • 2002.01.25 21:11
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이광수
      2002.01.25 23:30
      lParam := MakeLong(  smallint(point.x), smallint(point.y) ); post or Sendmessage ...
    • 5782_Click
      2002.01.25 21:26
      Point사용법은요.. 변수 선언시.. Point : ^integer ; <= 자료형 앞에 꺽쇠표시... Point := @LP...
    • 어린왕자A
      2002.01.25 21:39
      약간 이상한 듯.. 좌표값..TPoint를 LParam으로 주고 받고 할라구 그러는데요. y값은 어떻게 하나요???...
    • 서정길
    • 2002.01.25 20:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 황정선
    • 2002.01.25 20:04
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 5782_Click
    • 2002.01.25 19:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 죠스고기
      2002.01.25 23:15
      모든 분들 감사합니다. 결국엔 해결 했구요.... 제가 질문을 잘 못해서 여러분들을 헷갈리게 했나 봅...
    • 보들레르
      2002.01.25 23:26
      고기님.. 그 코드는 활성화 되어있는 윈도우에게 엔터키를 날리는 문장입니다. 만약 메세지윈도우 ...
    • 죠스고기
      2002.02.20 22:08
      맞는 말씀입니다. 활성화 되어있지 않으면 무용지물이죠. 제가 바버죠 ~~ ^^ 그래서 님들께서 ...
    • 보들레르
      2002.01.25 20:06
      메세지 다이얼로그의 클래스 명과 캡션을 이용해 핸들을 구하고, 적당한 시간뒤 죽여버리면 되겠네요. ...
    • 박정모
      2002.01.26 00:43
      볼랜드 포럼에 제가 등록한 방법입니다. 참고 하시길... http://www.bcbdn.com/impboard/impboard.dll?...
    • 이낭하
      2002.01.25 19:03
      제가 알고 있기로 ShowMessage에서 님과 같은 방법으로 죽일수 있는 없습니다. 일단 showmessage는 모달로...
    • 죠스고기
      2002.01.25 21:23
      결국에는 맹글어야 한다는 얘기군요. 다이얼로그 있는 코드 보니까 만들기는 어렵지 않지만. 문제는 ...
    • • • •
    • 박희경
    • 2002.01.25 13:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김대건
      2002.01.25 13:45
      --------------- with Form1.memberSQLQuery do      begin   &...
    • 박희경
      2002.01.25 19:42
    • 조성택
    • 2002.01.25 10:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2002.01.25 12:21
      일반적으로 c언어로 모듈을 작성할 때에는 h file에 interface(declaration)을, cpp file에 implementatio...
    • 델사랑
    • 2002.01.25 09:09
    • 2 COMMENTS
    • /
    • 0 LIKES
    • anderson
      2002.01.29 05:04
      1. 파이어월이 깔렸을 때와 같은 현상이군요. 2. "외부 --> 외부"  로 해보세요...
    • 이경문
      2002.01.25 12:16
      뾰족한 해결방법이 있는 것은 아닙니다. internet 프로그래밍을 하실 때 다음을 염두에 두어야 합니다. ...
    • 배건환
      2002.01.25 21:12
      보통 UpdateSQL컴포넌트에 지정되어 있으면 자동으로 Update가 됩니다. 그래서 수정하면 바로 데이터베...
    • 고빙학
    • 2002.01.25 08:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성낙균
      2002.01.25 08:19
      C:Program FilesCommonfilesBorlandSharedBDEdatapump.exe 를 이용해보세요... 그럼 ...
    • 이영주
    • 2002.01.25 06:33
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박영&#48
    • 2002.01.25 06:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • irookie
      2002.01.25 21:15
      저도 같은 경우가 있었는데... 원인은) FTPDemo.exe라는 파일이 실행이 되고 있는데, 같은 위치에 같...
    • 이호성
    • 2002.01.25 05:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 보들레르
      2002.01.25 20:16
      안녕하세요~ 구창민입니다. 버튼을 SpeedButton 으로 바꾸시구요. 간단한 서브클래싱을 하시면 됩...
    • 5782_Click
      2002.01.25 18:48
      Tbutton으로 하니까 안대더군염... 저더 생각 못해봤눈뎅... Bit버튼의 onmousemove이벤트에다가 함 해...
    • PINE
    • 2002.01.25 04:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 5782_Click
      2002.01.25 19:04
      음...헤깔리네여..질문이..ㅠ.ㅠ --------------------------------------------------------- -------...
    • 보들레르
      2002.01.25 06:28
      //클릭1 PageControl1.ActivePage := 0 //탭쉬트 1 폼.쏘모달; //클릭2 PageControl1.ActivePage := ...
    • 김화수
      2002.01.25 19:37
      답변고맙습니다. 음... 해결이 되었습니다. 근데, ActivePage를 하니까 형이 안맞다구 나오더라구요. 그...
    • 김화수
      2002.01.25 03:48
      저는 이렇게 했습니다. 맞는 방법인지는 잘모르지만.... 삭제가 되더라구요...*^^ 메뉴에서 Commponet의 ...
    • 이낭하
      2002.01.25 18:32
      Configure(Commponet) palette에서 삭제하는 방식은 옳지 않습니다. 일단 히든으로 처리되었기 때문에 콤...
    • 황남철
      2002.01.25 03:56