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
[10483] Re:Re:Re:[질문] SQL을 사용한 프로그램의 종료 & EAccessViolation
몰라 [] 1088 읽음    2001-08-31 00:38
잘하고파 님이 쓰신 글 :
: 최보현.U&I 님이 쓰신 글 :
: : 잘하고파 님이 쓰신 글 :
: : : 아래와 같이 MySQL을 사용한 애플리케이션에서 종료 버튼에 대해 아래와 같이 코딩을 하였습니다.
: : :
: : : 그런데 이놈의 프로그램이 종료할 때마다 EAccessViolation error가 납니다.
: : : DB관련 콤포넌트 및 폼의 메모리 해제 때문인 것 같은데 DB관련 지식이 넘 모자라 어케 해야 될지를 모르겠습니다.
: : :
: : : 도대체 어떻게 종료 해야져?
: : :
: : : void __fastcall TWiscoMain::Button_ExitClick(TObject *Sender)
: : : {
: : :         if(Modem->Opened)
: : :                 Modem->CloseDevice();
: : :         Timer1->Enabled = false;
: : :
: : :         DeleteCriticalSection(&CriticalSection);
: : :
: : :         ViewSQL->Close();      
: : :         Ch_SQL1->Close();
: : :        
: : :         if ( Data_F->Database1->Connected == true )
: : :         {       Data_F->Database1->Disconnect();
: : :                          //  Data_F는 실행시 자동생성되는 폼이며 Show()는 하지않음
: : :                 Data_F->Transact1->Disconnect();
: : :                 Data_F->Database1->CloseDatasets();   
: : :                 Data_F->Free();
: : :         }
: : :        
: : :         Close();
: : : }
: : :
: :
: : 유엔아이 현입니다 ...
: :
: : 소스로~~~~~
: :
: : void __fastcall TWiscoMain::Button_ExitClick(TObject *Sender)
: : {
: :     if(Modem->Opened) Modem->CloseDevice();
: :
: :     DeleteCriticalSection(&CriticalSection);
: : 
: :     Close();
: : }
: :
: :
: : 이렇게 ...
: :
: : 디비 컴포넌트를 사용자가 직접 new 로 생성 하지 않은 이상에야 ...
: :
: : new 로 생성 했다구 해도 바로 delete 만 해도
: :
: : 굳이 Close 하지 않아도 ...
: :
: : 컴포넌트 크래스의 소멸자에서 자동으로 Close 되며, 소멸 됩니다.
: :
: : 타머도 마찬가지구요~
: :
: :
: : 그럼
: :
: :
:
: 흑흑...님께서 가르쳐 주신대로 해도 마찬가지 에러가 나요...
: 참고로 에러시 브레이크 되는 MySQL 콤포넌트 관련 pascal 파일 소스는 아래와 같습니다.
: 파스칼도 잘 몰라서리... 도와주세요
:
: { Remove query from query's list }
: procedure TZDatabase.RemoveDataset(Dataset: TObject);
: var
:   N: Integer;
: begin
:   N := FDatasets.IndexOf(Dataset);   -----> 요기서 걸립니다.
:   if N >= 0 then
:   try
:     TDataset(FDatasets[N]).Close;
:   finally
:     FDatasets.Delete(N);
:   end;
: end;
:


에 맟을지 안맟을지 모르겠지만

       Data_F->Database1->CloseDatasets();         
       Data_F->Database1->Disconnect();
       //  Data_F는 실행시 자동생성되는 폼이며 Show()는 하지않음
       Data_F->Transact1->Disconnect();
       Data_F->Free();

요렇게 Data_F->Database1->CloseDatasets(); 을 첨에 놔두면 어떨가요
CloseDataSet 명령을 줄려면데이타베이스에 연결된상태에서 명령을 주어야할거 같은데요

바뻐서 컴파일은 못해보겠네요^^ .




        





+ -

관련 글 리스트
10478 [질문] SQL을 사용한 프로그램의 종료 & EAccessViolation 잘하고파 1154 2001/08/30
10479     Re:[질문] SQL을 사용한 프로그램의 종료 & EAccessViolation 최보현.U&I 1075 2001/08/30
10480         Re:Re:[질문] SQL을 사용한 프로그램의 종료 & EAccessViolation 잘하고파 983 2001/08/30
10483             Re:Re:Re:[질문] SQL을 사용한 프로그램의 종료 & EAccessViolation 몰라 1088 2001/08/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.