Q&A

  • 응용프로그램 오류가 예측이 안됩니다.
저 아래 질문에서 좀 정리가 되기는 한듯 한데...이해가 잘 안되서요. 도와주세요.

1. 외부 입력이 오면 thread를 부르고 thread에서는 전혀 db 액션이 없습니다. 단 postmesage에서 thread_done메시지를 받고 이 프로시져에서 수행결과를 db에 저장합니다. thread예제를 살펴보았으나 여기서 db작업을 하는것에 대해 어떠한 말도 안나와 있더군요. 이 프로시저에서 화면에 정보를 출력합니다. sync...도 사용하지 않습니다.

-> thread_done이 왔을때 해당 프로시저는 thread내부인가요? 헷갈리네요. thread_done이 되었을때 db작업을 하는게 session을 꼭 열고 작업을 해야 하나요? 이건 그냥 thread의 끝에 끝을 알리는 저장을 하는것인데요...

2. debugging을 돌리니까 Eaccessvioliation이 나오거든요. 매번 나오는 것은 아니고요. 이건 아마 테스트를 하느라고 thread만들걸 nil로 만들고 다시 참조하는 바람에 나오는것 같은데...

3. thread safe란게 있던데...혹 제가 프로그램을 thread safe하게 안짠건 아닌까요? 그렇게 짜면 응용프로그램 오류가 나고 프로그램이 멈추는 현상이 날수가 있는가요?

하루종일 프로그램을 돌리거든요. 어떤날은 안나오고 어떤날은 "응용프로그램 오류"라고 나와요. 제가 메모리를 사용했다면 그쪽을 보겠는데...db도 아닌것 같고(프로그램이 멈추어 버립니다)  미칠지경입니다. 예측가능한 것은 쓰레드인데...쓰레드도 단순해요. 다만 코드가 PostMessage가 부르는 프로시져에서 할일이 많습니다. 즉, PostMessage에서 thread_done이 되었으니 화면에 좀전에 실행한 것을 (수치)를 보여주고 thread := nil로 만들지요. 그리고  또 thread를 실행해서 보여주고....혹 이 루틴에서 메인화면의 버튼이나 리스트에 적는데 이것 때문인가요? 근데 왜 맨날 나오는게 아니고 어쩌다 한번씩 나올까요? 혹. 이 작업을 할때 syncronize(...)를 사용해야 할까요? 근데 이건 thread의 execute메소드에서 실행안해도 되는거거든요. 도와주세요.






2  COMMENTS
  • Profile
    타락천사 2002.10.22 19:24
    안녕하세여. 타락임다..

    저.. 혹시. Thread 에 nil 을 할당했나여?
    그럼 문제의 여지가 있을 수 있습니다.

    아래가 스레드 종료에 대한 설명...

    스레드가 종료되는 시점은 Execute() 의 실행이 종료되는 시점임다. Execute() 가 종료되면 델파이 RTL 인 EndThread() 가 호출됨다. EndThead() 는 API 함수 ExitThread() 를 호출함다. ExitThread() 는 스레드의 스택을 적절히 처분하고, API 스레드 객체를 해제함다. API 부분 처리가 끝남다.

    다음에 델파이에서 선언한 TThread 객체 처리가 남았죠. 간단한 방법은 TThread 객체의 FreeOnTerminate 속성을 True 로 하는 것임다. 그럼 Execute()의 실행이 종료되면 TThread 객체를 제거함다. 그렇게 하지 않고 직접 객체를 해제시키려면 TThread 의 OnTerminate 라는 이벤트에서 하는 것도 좋습니다. TThread 의 OnTerminate 이벤트는 자신의 실행이 끝날 때 발생함다.

    즐푸하세여..

    타락천사..
  • Profile
    박정찬 2002.10.23 03:39
    OnTerminate 이벤트가 일어날때 거기서 Nil을 해줬거든요.
    어쨌든 Nil로 된걸 막았어여. 그래두 난다면 아 정말 어떻게 해야될지...

    현재 필드에 나가있는 장비는 그대루인데 지금은 괜찮은가봐요. 개인적으로 멜을 드렸습니다. 난감하네요. 응용프로그램 오류라...

    개인적으로 2일정도 돌려봤는데 이상이 없네요. 근데 보름만에도 나오고 그런다니 속이 탑니다. 이게 제가 만든게 잘못 프로그래밍을 한것인지 기타 os때문인지, 라이브러리 때문인지 알수가 없네요. 답변감사합니다.
    • 머슴
      2002.10.22 23:55
         if FileExists('update.list') then //화일이 있으면
    • 샤리
      2002.10.23 00:40
      감사합니다.. 음..파일을 다운받고나서 정보를 보면.. 경로|파일이름|날짜|시간.. 이렇게 나와야 하거든...
    • 벤지
      2002.10.23 02:30
      델코에 올린적이 있었는데 지워져 버렸네요오 어디까지 개발하실지는 개발하실때에 생각를 하시어서 ...
    • [ROOKIE]
      2002.10.22 23:42
      간단하게 생각해서... 일단 24bit로 해상도를 바꾸세요. 걍.. 화면이랑 그런건 바꿀필요 없고... 단지 Im...
    • 나윤호
      2002.10.23 02:27
      Image1.Picture.Bitmap.PixelFormat := pf24bit; 이것만 추가해주니 기존의 로직데로 모두다 잘되는군요....
    • 송영식
    • 2002.10.22 22:00
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 머슴
      2002.10.22 22:25
      님이 만드신  텍스트 파일을 체크해서 있으면 열고,없으면 새로 만들어 열어 기록하는 문장으...
    • 송영식
      2002.10.22 23:09
      먼저 답변에 감사드리구여. ^&^ Append로 바꾸어 테스트 해보앗는데여. 파일을 찻을수 없다는 에러 ...
    • 니야옹
      2002.10.22 23:17
      질문내용으로 봐서는 FileCreate함수에서 발생하는 오류를 해결하시려는 것 같은데... 그건 파일명에...
    • 송영식
      2002.10.22 23:49
      몇달동안을 헤멨는데 인제야 해결햇읍니다. 머슴님 께서 써주신 구문에 Append 대신 Rewrite 프로시져를 ...
    • 김진호
    • 2002.10.22 20:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채태숙
      2003.12.17 20:29
      Options 에 goRangeSelect 부분을 True로 주시면 Row의 다중 선택이  가능합니다..
    • 정성훈
      2002.10.22 22:27
      SELECT '국어',            ,A.강의사작일  &...
    • 델사랑
      2002.10.22 23:16
      답변고맙습니다 제가 ADO를 이용해서 MDB를 연결했는데 쿼리에서 CASE를 사용하면 없는 문법이라고 나옵니...
    • 정성훈
      2002.10.23 00:44
      mdb 라면 Access 인가요? 걔는 안되는걸로 알고잇는디.. ㅡ.ㅡ 직접 테이블 만들어서 한번 보니까 순전히...
    • KDDG_ZZOM
      2002.10.22 20:54
      테이블키도 함께 알려주셔야될것같은데요?? 글구 델파이에서 case,decode가 안되는게 아니고 데이타베이...
    • (_^^)~U
      2002.10.22 20:35
      if FileExists('D:liveupdateupdate.list') then //D:liveupdateupdate.list 파일이 있으면
    • 샤리
      2002.10.22 20:51
      감사해요.. 그런데 제가 이걸 어디다가 써야할지 잘 모르겠거든요..ㅡㅡ;; 제가 지금 다운로드 버튼을 누...
    • 이은우
    • 2002.10.22 20:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.10.22 20:31
      TTable 또는 TQuery에서  FieldList.Find를 이용해 보세요 TTable을사용하는 경우  &...
    • 양준호
      2002.10.22 21:00
      답변감사합니다. 그런데요. 제말은 DB에서 특정필드가 있으면 에디터박스를 보여주고 필드가없으면 박스...
    • 2002.10.23 00:05
      Enabled를 Visible로 하면 되겠네요... 즐코하세요...
    • 코난
    • 2002.10.22 20:10
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Hoya
      2002.10.22 20:22
      ^^ 예전에 이것땜시 고민하다가..고생한 적이 있는데.. 그럼... sql 스토어 프로시져 내용.. CREATE PRO...
    • 코난
      2002.10.22 20:33
      내용물에는 이상이 없구여.. sql2000을 쓰고  델파이 5.0 을 쓴ㄴ데.. PBOOKJANCHECK 라는 ...
    • KDDG_Hoya
      2002.10.22 21:07
      --- 흠.. 쿼리를 오픈하시는 건가여..?       스토어프로시져로 데이터를 ...
    • 정용광
    • 2002.10.22 19:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정성훈
    • 2002.10.22 19:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김해성
    • 2002.10.22 18:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2002.10.22 19:12
      안녕하세여. 타락임다.. TDBEdit 나 TDBGride 등등의 것들은 Show 하기 위한 것으로 사용하시는게 좋습...
    • 짱아
    • 2002.10.22 18:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조성환
      2002.10.22 19:43
      Deployment 라이센스가 없는 듯 합니다. 관련 라이센스를 확인하시고 라이센스 파일과 같이 배포하면서 ...
    • 프리빌
    • 2002.10.22 08:06
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.10.22 19:45
      저같은 경우는 실제 실행 Code보다 Data 특히 Image등이 전체 크기의 대부분(2/3 이상)을 차지하는 경우...
    • 박장용
      2002.10.22 19:17
      프로그램 배포를 고려한 프레임웤을 짜는일은 프로젝트 초기에 결정되어져야 하는 일입니다. 나중에 ...
    • 타락천사
      2002.10.22 18:39
      안녕하세여. 타락임다.. 폼별로 DLL 로 만들어 넣는 방법이 있습니다. 그런데 DLL 은 사용에서 좀 많이...
    • 타락천사
      2002.10.22 18:41
      안녕하세여. 타락임다.. 사실 사용자가 보는 화면은 여러개의 Layout 이 겹쳐진 겁니다. 전에 최용...
    • 윤기원
    • 2002.10.22 05:12
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박정찬
    • 2002.10.22 04:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2002.10.22 19:24
      안녕하세여. 타락임다.. 저.. 혹시. Thread 에 nil 을 할당했나여? 그럼 문제의 여지가 있을 수 있습니...
    • 박정찬
      2002.10.23 03:39
      OnTerminate 이벤트가 일어날때 거기서 Nil을 해줬거든요. 어쨌든 Nil로 된걸 막았어여. 그래두 난다면 ...
    • 김만구
    • 2002.10.22 04:28
    • 0 COMMENTS
    • /
    • 0 LIKES