Q&A

  • Dll 메모리 해제 ㅠ.ㅠ
바로 요점으로 들어가서리..

메인은 exe 프로그램입니다.

메인폼(폼A)은 MdiForm 이구여..

여기서 특정 버튼을 누르면...

Dll에 포함된 서브폼(폼B)이 나타납니다.

이 서브폼은 MdiChild 랍니다.

이 서브폼B에서 다시 특정 버튼을 클릭하게 되면..

다시 하위폼이 나타나죠..

그 하위폼(폼C) 역시 Dll에 포함되어져 있답니다. <== 아까와는 다른 Dll

이 폼은 모달폼입니다.

그런데..

이 폼들을 닫을 때..

에러가 발생하는 군여..

최하위폼(폼C)인 모달폼을 추가하기 전까지는 메모리 해제에

문제가 없었는데 말이죠.

현재두 폼C를 열지 않으면 아무런 문제가 발생하지 않는답니다.

참고로 메모리 해제를 하는 방법은..

Handle값을 넘겨줘서..

각 서브폼들이 Destroy될 때..

메인으로 메세지를 보냅니다.

현재 메인까지 메세지는 정상적으로 날라오구요. ㅠ.ㅠ

메인에선 메세지를 받아서 잠시 Sleep을 준 후에

메세지를 해제하는 데..

일정치 않은 오류를 발생하면서.. (Access vioaltion이 나타나는 시기...)

문제가 생기는 군여

고수님들의 도움 기다립니다. ㅠ.ㅠ
4  COMMENTS
  • Profile
    혜월 2003.05.29 01:31
    모달폼은 메인에서 처리하지 말고
    모달폼을 부르는 dll에서 free하면 됩니다.
    이때는 loadlibrary 밑에 써주면 되는데요
    핸들을 넘겨주고 받을 필요 없습니다.

  • Profile
    남궁혁 2003.05.29 01:46

    네..

    안그래도 혜월님께서 말씀해 주신 것처럼..

    Child 폼에서 모달폼을 해제 시키는 방법으로 해보았답니다.

    그런데 좀 신기한 현상이 일어나서리..

    모달폼에서 Child 폼으로 리턴값을 반환할 때는 PChar 형으로

    넘겨 주었구여..

    Child 폼에서 Freelibrary를 시켜 주는데도..

    글쎄..

    Access Violation이 일어나지 뭡니까??

    그래서 무엇이 문제일까  찾아 보다가..

    Freelibrary바로 전에..

    Showmessage로 핸들값을 찍어 보았답니다.

    이상하게도 그 후부터 에러가 나지 않더군요..

    다른 부분을 아무리 보아도 이상해서..

    Showmessage로 다른 메세지를 찍어 보아도..

    문제는 생기지 않구여..

    그런데..

    Showmessage를 빼기만 하면..

    바로 에러가 발생되는군요..

    Showmessage 대신에..

    sleep 함수를 써서 딜레이를 시켜도 마찬가지구여..

    이건 또 무슨 조화일까요??

    하늘도 저를 시험하는 군여 .. ㅠ.ㅠ

    늘 저의 질문에 관심을 가져 주심 정말로 감사드립니다. ^^
  • Profile
    ㉯㉰감자 2003.05.30 00:33
    ShowMessage 하면 정상작동하고 빼면..안된다...

    저도 이런 Case를 당해봤는데요...

    이럴때 application.ProcessMessages를 넣어주니 되더군요...

    그때 당시에..왜 그런지...분석을 해봤는데..지금은 가물 가물..

    하여튼 저거 한번 넣고 해보세요~
  • Profile
    남궁혁 2003.05.30 03:17
    어제 오후에 해결을 했는데...

    말하기가 좀 남사시러워서리..

    쩝..

    Child 폼에서 불러냈던 폼이 모달폼이라는 걸 잊구 있었지 뭡니까??

    처음에는 Child 폼으로 했었는데..

    모달폼으로 바꾼 후에..

    Close 이벤트가 발생할 때..

    Action := caFree; 이 부분을 그대로 사용하고 있더군요..

    이 부분을 지우고..

    ShowModal 후에..

    Form.free; 를 추가하니..

    정상적인 작동을 하네요..

    이래서 초보란.. 슬픈거 같네요. ㅠ.ㅠ
    • 방은정
    • 2003.05.29 19:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.05.29 19:29
      안녕하세요. 최용일입니다. 레코드 선언하는 부분은 이상이 없네요... 뭔가 다른 부분에서 이상이 있는...
    • 장성석
    • 2003.05.29 16:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 나그네
    • 2003.05.29 11:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • yosule
      2003.05.30 20:46
      ^^
    • 권광화
    • 2003.05.29 11:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.05.29 19:36
      안녕하세요. 최용일입니다. Read/ReadLn, Write/WriteLn등의 함수를 이용해보세요... WriteLn('숫자...
    • 이정은
    • 2003.05.29 04:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_09
      2003.05.29 22:58
      Query 콤포넌트로도 Insert, Edit, Delete, Post 등등 테이블 콤포넌트에서 했던것과 같이 사용할 수 있습...
    • major
      2003.05.29 04:34
      그러면 이렇게 하는 건 어떨까요? update tablename set aaaa = :aaaa, bbbb = :bbbb, ...... ...
    • 김정은
    • 2003.05.29 03:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 한영관
      2003.05.29 05:46
      a  와  b 사이의 난수를 발생하고자 한다면 예를 들어 b 가 상한선이라면.. ()에는...
    • 이성훈
      2003.05.29 05:02
              i := Random(100);      &nb...
    • 이상원
    • 2003.05.29 03:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박정일
      2003.05.29 22:11
      괜찮은 사이트입니다. fa.delphikorea.com 그리고 시리얼통신 자체에 관한 책은 [serial port complete...
    • 한만교
      2003.05.29 07:32
      안녕하세요,,,통신에 대한 자세한 내용을 다룬 책은 없습니다.. 단지 해당 자동화 관련 사이트를 찾아보세...
    • 정수지
    • 2003.05.29 03:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • major
      2003.05.29 04:27
      안녕하세요.. 위와 같이 하시려면 제 생각에는 그룹푸터를 사용하면 될 것 같은데요.. 그룹 헤더에...
    • 정수지
      2003.05.30 00:39
      메일을 보내려고 했는데...안가고 돌아오더라구여..^^;; 그래서 이렇게 다시 질문을 올립니다. 우선 님의...
    • ㉯㉰감자
      2003.05.29 18:56
      해당 쿼리를 날리고 읽어오는 부분의 소스좀 보여주시죠... ADO에서 마이너스값이 있어도 정상적으로 불...
    • 최진술
      2003.05.29 19:31
      아래에 소스올립니다.. - ADO CONNECTION의 CONNECTIONSTRING부분의 세팅부분 Provider=SQLOLEDB.1;...
    • ㉯㉰감자
      2003.05.29 23:22
      제가 MS SQL Server가 없어 Access로 테스트 해봤는데요... 여전히 잘되거든요... 아마도 님의 테이...
    • 최진술
      2003.05.30 19:19
      DB에는 분명 선택 레코드의 필드값에 마이너스값이 존재합니다.. BDE로 연결하면 정상적으로 잘나오거든...
    • 김정은
    • 2003.05.29 01:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이성훈
      2003.05.29 05:06
      c:Program FilesComm FilesBolrand SharedImages.. 그럼 즐푸하세요
    • 최용일
      2003.05.29 20:30
      안녕하세요. 최용일입니다. 자료실에서 CRC라고 검색해보세요... ^^ 항상 즐코하세요...
    • 최용일
      2003.05.29 20:14
      안녕하세요. 최용일입니다. 컴포넌트 소스를 수정하세요. Font속성을 만드셔서 쓰시던가 화면에 출력...
    • 김경남
    • 2003.05.29 00:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.05.29 20:09
      안녕하세요. 최용일입니다. Destroy를 직접적으로 호출하시는 것은 별로 안좋은 방법입니다. 대신에 Fre...
    • 조경모
    • 2003.05.29 00:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 별볼일없는
      2003.05.29 01:11
      options에 rowselect = False 하시면...
    • 조경모
      2003.05.29 02:32
    • 남궁혁
    • 2003.05.28 23:27
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 혜월
      2003.05.29 01:31
      모달폼은 메인에서 처리하지 말고 모달폼을 부르는 dll에서 free하면 됩니다. 이때는 loadlibrary 밑에 ...
    • 남궁혁
      2003.05.29 01:46
      네.. 안그래도 혜월님께서 말씀해 주신 것처럼.. Child 폼에서 모달폼을 해제 시키는 방법으로 ...
    • ㉯㉰감자
      2003.05.30 00:33
      ShowMessage 하면 정상작동하고 빼면..안된다... 저도 이런 Case를 당해봤는데요... 이럴때 applicat...
    • 남궁혁
      2003.05.30 03:17
      어제 오후에 해결을 했는데... 말하기가 좀 남사시러워서리.. 쩝.. Child 폼에서 불러냈던 폼...
    • 정수지
    • 2003.05.28 23:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정수지
      2003.05.28 23:46
      해결봤습니다..^_______________________________^ 왜 자동으로 생성되지 않는가는 모르겠지만.... 우쨌...
    • ㉯㉰감자
      2003.05.29 01:49
      콤포넌트(TQuery)에서 더블클릭시 나오는 필드들은 콤포넌트내의 SQL프로퍼티에 집어 넣은 쿼리문을 돌려...
    • 김정은
    • 2003.05.28 23:00
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이정택
    • 2003.05.28 22:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2003.05.29 04:55
      샬롬~ 필드바이 네임을 쓰시려면 AddField해줘야 함니다.. Query1.fields.field[0].asString; 이건 ...