C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[24086] OLE (Excel) 관련 에러인듯 합니다.. NotifyNonDelphiException 에러.
smleelms [smleelms] 1910 읽음    2003-02-05 22:42
아래는 엑셀(Excel)로 데이터를 저장하는 루틴입니다.
그런데 아래의 소스만 작성하여 컴파일하면 깨끗하게 잘 동작을 합니다.


// Excel's Application Object
Variant xlApp = Variant::CreateObject("Excel.Application"); <----------#########
xlApp.OlePropertySet("DisplayAlerts", false);
xlApp.OlePropertySet("Visible", false);
// 엑셀의 워크북 오브젝트 접근
Variant xlBooks = xlApp.OlePropertyGet("Workbooks");
//파일을 새로 만들때
//xlBooks.OleProcedure("Add");
// 존재하는 엑셀 파일을 연다.
xlBooks.OleProcedure("Open", OleVariant(strNewXlsFile));
// 어플리케이션 내에서 첫번째 워크북을 얻는다.
Variant xlBook = xlBooks.OlePropertyGet("Item", 1);
// 워크시트들을 관리할 수 있는 오브젝트를 얻는다.
Variant xlSheets = xlBook.OlePropertyGet("Worksheets");
// 첫번째 워크시트를 얻는다.
Variant xlSheet = xlSheets.OlePropertyGet("Item", 1);
xlSheet.OlePropertySet("Cells", 40, 11, 1000);

xlBook.OleProcedure("Save");
xlBooks.OleProcedure("Close");
xlApp.OleProcedure("Quit");

xlSheet  = Unassigned;
xlSheets = Unassigned;
xlBook   = Unassigned;
xlBooks  = Unassigned;
xlApp    = Unassigned;


그런데 제가 특정 ocx 파일을 임포트해서 생성된 컴퍼넌트만 붙이면, NotifyNonDelphiException 에러가 발생합니다. 특정 컴퍼넌트도 개별적으로 사용할때는 아무런 에러가 없었고, 또 같이 붙여도 이 컴퍼넌트는 잘 동작합니다. 이 컴퍼넌트를 프로젝트에 추가하면

#include "CWxxxLib_OCX.h"   <-- head file
#include <OleCtrls.hpp>     <-- head file
#pragma link "CWxxxLib_OCX" <-- cpp file

이넘들이 자동적으로 추가가 되는데요...
그러고 나면 위의 엑셀관련 루틴에서 화살표( <--## ) 이후부분에서 무조건 Access violation 에러가 발생하네요.. 화살표 부분의 소스는 실행이 되고, 다음 라인부터 한라인씩 주석처리를 해도 무조건 에러가 발생합니다.

그리곤 항상 system.pas의 다음의 라인으로 갑니다..

{ tell the debugger about the raise of a non-Delphi exception }
{$IFNDEF LINUX}
procedure       NotifyNonDelphiException;
asm
        CMP     BYTE PTR DebugHook,0
        JE      @@1
        PUSH    EAX
        PUSH    EAX
        PUSH    EDX
        PUSH    ESP
        PUSH    2
        PUSH    cContinuable
        PUSH    cNonDelphiException
        CALL    RaiseExceptionProc
        ADD     ESP,8    <------------##########
        POP     EAX
@@1:
end;
{$ENDIF}


그래서 별도의 폼으로 만들어서 헤더파일과 소스파일을 분리를 했는데도 여전히 동일한 에러가 발생합니다... 둘다 포기할 수 없는 부분이라(ㅠ.ㅠ) 해결책을 찾아야 되는데, 너무 어렵네요..

해결책이나 저 에러를 피해갈 수 있는 방법을 아시는분의 답변을 부탁드리겠습니다. (__)

+ -

관련 글 리스트
24086 OLE (Excel) 관련 에러인듯 합니다.. NotifyNonDelphiException 에러. smleelms 1910 2003/02/05
24112     자답 : Excel Component 사용에 따른 자답 및 질문입니다. smleelms 3080 2003/02/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.