|
잘하고파 님이 쓰신 글 :
: 아래와 같이 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 되며, 소멸 됩니다.
타머도 마찬가지구요~
그럼
|