Q&A

  • 'Colnitialize를 호출하지 않았습니다'라는....
질문과 같은 에러멧세지가 Excel을 Create한다든가 할때 나타나는데요
여기저기 Q/A를 뒤져 보아도 Comobj를 사용하려는데 초기화 할 수 없다라든가
ActiveX를 uses절에 추가해 보라든가... 이런 대답이 많았습니다.

저의 경우는요 새로운 프로그램을 실행하고 ADO관련 컴포넌트를 가져다 놓앗을 때는
uses 절에 자동으로 OLEDB 가 나타났습니다.
그 이후 다른조치 없이 그냥 DAO컴포넌트를 사용 할 수 있었습니다.

문제는 이제 잘 돌아가고 있는 어플에 저 ADO 컴포넌트를 사용 하려고 하면서 부터입니다.
계속 'Colnitialize를 호출하지 않았습니다'라는 에러 메세지가 나오는데요...
uses절에 Comobj, ActiveX를 등록해도 에러멧세지는 계속 됩니다.

질문1. 새로 어플을 만들때는 잘 되다가 기존에 되어있는 어플에 적용 할려니 안되는 이유가 무었일까요?
질문2. "Colnitialize" 요넘이 무엇인가요? 정체를 알수 없으니 Comobj도 추가해보고..
       ActiveX도 추가해 보고 Oleobj도 추가해보고(요넘은 xxx.dcu가 없다고...)....
아시는 분 한말씀 부탁 드립니다. 감사합니다.
3  COMMENTS
  • Profile
    아폴론 2003.02.10 21:41

    답변해 주신 창민님 감사합니다.

    먼저 프로젝트 매니저를 실행하구 프로젝트.EXE에서 마우스 오른쪽버튼을
    누르면 소스보기가 있습니다. 그넘을 실행하고...
    begin
      Application.Initialize; //<==========  요거 추가
      Splashfm := TSplashfm.Create(Application);
      Splashfm.Show;
      Splashfm.Update;
      Application.CreateForm(TMainForm, MainForm);
      Application.CreateForm(Tmastdata, mastdata);
      Application.CreateForm(TFm4072, Fm4072);
      Application.CreateForm(TFmRuning, FmRuning);
      Application.CreateForm(TBrDateForm, BrDateForm);
      Splashfm.Hide;
      Splashfm.Free;
      Application.Run;
    end.

    저 Initialize가 새로운 프로젝트를 진행 할 때는 자동으로 나타내 주는데
    기존의 프로그램에 적용 할때는 나타나지 않습니다. 그래서 인위적으로 나타내 주면
    일단 되는 것 같은데요....

    글세요... 고수님들... 어떤가요?.. 아무 이상이 없을까요?...

  • Profile
    구창민 2003.02.10 23:04
    단순히 문제가 그거라면,

    initialization 영역에

      CoInitialize(nil); 를

    finalization 영역에
    CoUnInitialize; 를

    해주면 해결 될거 같네여..



  • Profile
    구창민 2003.02.10 20:43
    ADO 를 팻치 하셨나여?

    아마도 팻치 문제 때문일거 같네요.

    그럼~ 항상 즐거운 프로그래밍 하시길~~