델피언 여러분 안녕하세요.
이제까지 제가 올린 질문은 한 번도 답변을 해 주시지들 않았는데
이번에는 제발 답을 해주셔요.
오늘 질문은 dll내의 폼에 TTable이 있고 그 dll을 호출하는 프로그램에
TDatabase를 공유하는 문제입니다.
호출하는 프로그램은 MDI FORM을 사용합니다.
DLL내의 폼은 그 MDI폼에 들어가는 Child폼입니다.
mdi 폼에 database1이 있습니다.
child폼에 table1이 있습니다.
dll내의 함수에서 form1.Database1 := db;
이렇게 하면 호출하는 프로그램에서 만들어놓은 데이터베이스를 사용할 수는
있더군요. child 폼을 생성하고 죽이고 할 때는 아무 문제가 없습니다.
그런데!!!
프로그램을 종료하면 잘못된 메모리를 건드렸다며 에러가 뜨고
dll error in XXXXX하는 작은 창도 뜹니다.
왜그럴까요?
제가 생각할 때는 위에서 child 폼의 database에 assign한 database는
child폼을 죽이면서 함께 없어진 것 같습니다.
그러니 메인폼을 죽이니까 지가 죽으면서 데이터베이스 콘트롤를 없애야 하는데
없거든!? 그래서 그런것 아닐까요?
그런데 이 생각에도 문제가 있어 다시 생각해보니 아닌것 같습니다.
왜냐하면 child폼은 죽였다 살렸다를 여러번 반복해도 계속해서 그 데이터베이스를
쓸수 있으니까 말이죠.
왜 일까요?
좀 도와주셔요.
감사합니다.
-by goodkid