Q&A

  • ADOQuery 동적 생성 시 오류 발생...
ADOQuery를 Thread 내부에서 동적 생성하는데 오류가 발생 합니다..
아래와 같은....
'CoInitialize가 호출되지 않았습니다.' 라는 오류가 발생 하네요..

var
  adoquery : TADOQuery;
begin
  adoQuery := TADOQuery.Create(Form)
으로 했는데 오류가 발생 하네요.. 음...
처음에 한번은 잘 되었었는데..
갑자기 안되네요....

답변 부탁드립니다~~~~~~
4  COMMENTS
  • Profile
    김경록 2003.12.06 04:42
    Thread를 이용해서 메모리에 특정 클래스/변수를 동적으로 생성할때에
    메모리 부분 문제가 발생합니다..
    즉, Critical영역의 문제로, 침범할 수 없는 영역이 다른 Thread에 의해서
    침범되어 재선언되는 그런 현상이 나타날 수 있다는 뜻입니다..
    자료구조론을 살펴보시면, Critical Area에 대한 자세한 설명이 있을 겁니다..
    각설하구여..
    Thread가 생성된 후 일정시간이 지나서 Thread가 생성되어도
    같은 메모리에서 class가 생성될 가능성이 있습니다..
    Thread가 Create될때 시점과, 동적 Class를 Create할 때에 발생되는데..
    이점에 대해서 델파이에서 Synchronize라는 함수를 이용해서
    Thread와 Thread간의 Critical 영역에 대한 보증을 하도록 유도하고 있습니다.
    간혹 개발자분들께서 님과 같은 질문을 다분히 올리십니다..
    Thread의 개념을 자료구조론을 통해서 알고 계셨던 분들은
    한번 실행해서 에러가 발생하면, 대강 추측이 갈것이라 생각됩니다.
    어쨌든, 델파이에서 Thread를 만들면,
    영어로 주석으로 주절주절 써 놓은 문구가 보입니다..
    그 내용을 잘 참조 하셔서..
    Synchronize를 이용해서 Coding을 하세여..
    답이 되었길 바랍니다..
    간단한 예제도 델파이에서 Thread를 만들때 주석으로 나오니..
    금발 확인가능할 것입니다..



  • Profile
    김기원 2003.12.06 06:17

    답변 감사합니다..
    한가지만 더 물어보고 시픈데요...
    Synchronize를 이용했을때와 하지 않았을때의... 쓰레드내부처리 속도? 의 차이가 있을가요?
    없었을 때와 처리 속도가 조금... 차이가 나는듯해서요.....
    멀티스레드를 이용해서 처리 하고 있는데요....
    Synchronize를 이용해도 동시에 스레드가 작업을 하긴 하겠죠?
    스레드 첨 쓰는 왕초보라... ^^;;;;;
    이번에도 좋은 답변 부탁드립니다~~~ ^^ 감사합니다~~~~
  • Profile
    김기원 2003.12.06 06:29

    답변 감사합니다..
    한가지만 더 물어보고 시픈데요...
    Synchronize를 이용했을때와 하지 않았을때의... 쓰레드내부처리 속도? 의 차이가 있을가요?
    없었을 때와 처리 속도가 조금... 차이가 나는듯해서요.....
    멀티스레드를 이용해서 처리 하고 있는데요....
    Synchronize를 이용해도 동시에 스레드가 작업을 하긴 하겠죠?
    스레드 첨 쓰는 왕초보라... ^^;;;;;
    이번에도 좋은 답변 부탁드립니다~~~ ^^ 감사합니다~~~~
  • Profile
    김경록 2003.12.07 19:41
    Critical Area를 보시면, 특정 메모리에 다중 Access로 인한
    Data 불일치 또는 경쟁에 대한 Lock이 발생하는 지점(Memory영역)을
    말하는 것으로,
    각 Thread간에 이러한 영역(메모리영역)을 사용하게 설정해 놓았다면,
    Synchronize를 사용해서 우선권을 Thread가 확보할 수 있도록
    해 주어야 합니다.. (즉, 먼저 Access한 Thread가 우선권을 가지도록..)
    따라서, 이점에 대해서 속도차이가 생길 수 있는데 크게 차이가 나는 것은
    아닙니다.
    즉, 소량의 Data를 가지고 처리할때는 그 차이가 똑같이 보이나
    대량의 Data를 가지고 처리할때에는 확실히 속도차이가 나는 것을
    확인하실 수 있을 것입니다..

    다시말씀드려서,  특정 메모리영역(예를들면, 변수, 각 Class의 속성)을
    Thread에서 동시에 Access하는 경우에는 우선권 문제로 인해서..
    속도문제가 나타날 수 있습니다.

    따라서, 특정 메모리영역을 할당하거나, Access할때에만
    Synchronize를 사용하고, 각 Thread간의 문제가 발생할 소지가
    보이지 않는 것(특정변수에 대한 동시다발적 Access)에 대해서는
    Synchronize를 사용하지않는 쪽으로 Coding을 하시면 됩니다..


    • 이기석
    • 2003.12.08 10:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2003.12.08 19:33
      일단 BDE는..음.. 속도는 빠르기는 합니다만.. BDE를 사용하기 위해선 각 클라이언트마다 DBE와 SQL ...
    • goodlsw
      2003.12.08 19:30
      저희도 비슷한데요. 사실 mdb 로컬디비로 구성된 거래처인데 매장이 생기면서 mssql+bde로 바꾸었습...
    • 장덕곤
      2003.12.13 09:22
    • 김만세
      2003.12.08 02:51
      그냥 단순화 시켰습니다 ^^; T쿼리를 하나 만들어서 최대값 구하려는 필드만 검색해왔습니다.. 움.. 이렇...
    • ^ㅡ^
      2003.12.08 06:24
      님에게 도움이 될지 모르겠네요 그 방법보다는 이 방법이 더 좋을듯 싶은뎅    &...
    • 김만세
      2003.12.08 07:04
      이렇게 간단한 방법이 있었군요 ^^; 좀 민망하기도 하지만 .. 또 한가지 배웠다는 사실이 기쁘군요 ^^; ...
    • 임형호
      2003.12.08 17:12
      SQL 공부를 먼저 선행하심이 좋을듯 싶네요. SQL이야 배워두면...   어느 DB에서든 똑같이 사...
    • 김만세
      2003.12.09 02:09
      이렇게 지도해 주셔서 고맙습니다 ^^ 회원관리프로그램을 짜야해서.. 무작정 불도저식 작업을 계속 하...
    • 이중철
      2003.12.09 03:36
      Skin을 하고자 할때 진짜 Image를 Overlay할때 조금씩 틀리는데..
    • 김경록
      2003.12.07 19:50
      as.integer로 사용하시면 됩니다.. 델파이가 Integer라는 것의 정의를 운영체제에 따라서 다르게 해석...
    • 김만세
      2003.12.07 20:34
      이렇게 시간 내서 답변주셔서 감사합니다 ^^ 제가 하려는 것이.. select문에서 'Select * From Custom Wh...
    • 김경록
      2003.12.08 19:23
      에러 메세지 내용을 정확히 올려주셨으면 답변을 들리텐데 제가 보기엔 SQL문에 문제가 있네여 Select ...
    • 김만세
      2003.12.09 01:58
      아~ 또 실수를 했네요  ^^;; 김경록님 이렇게 계속 도움을 주셔서 감사합니다 ^^
    • 궁금이
    • 2003.12.07 08:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2003.12.09 18:56
      현재 커서 위치에 글 입력 하시려면 SetSelTextBuf 메쏘드를 사용하시면 됩니다. Memo1.SetSelTextBuf('...
    • 김형근
    • 2003.12.07 06:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2003.12.09 03:47
      정확히는 모르지만 ^^ repaint는 해당 Control(WinControl에서 상속받은 모든..)을 재작성하라는 명...
    • 박한규
      2005.02.25 06:11
      먼저 invalidate와 update를 설명해야 repaint를 설명할 수 있습니다. invalidate는 그리기 메시지를 생성...
    • ^ㅡ^
      2003.12.07 04:25
      답변이 될지 모르겠습니다. tmp : String; begin    tmp  := "AVDSADSFFADSS...
    • 너구리
      2003.12.08 20:30
      그렇다면 배열을 동적으로 만들어야겠네요./. 먼저 (엑셀파일을)읽어서 필드가 몇개인지 알아야겠죠.. ...
    • nilriri™
      2003.12.09 01:39
      http://www.qusoft.com/
    • 성더기
      2003.12.08 19:22
      TForm1.FormCreate라는 넘이 어디에도 선언이 안돼있단 이야기 같은데요 보통은 Form1 := TForm1.Create(S...
    • Crazy
      2003.12.08 23:15
      case Application.MessageBox( '?????', '???', mb_yesnocancel+mb_iconquestion ) of id_yes : ???? id_...
    • 조범주
      2003.12.08 20:45
      제가 사용하는 방법이 질문하신 내용에 부합되는지는 모르겠지만서도요... 저는 이렇게 소스상에 사용하...
    • 최인권
    • 2003.12.06 07:53
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2003.12.06 08:23
      변수를 선언합니다 팔요한 만큼 V_field :  String; //필드명 V_db : string; // 디비명...
    • 차한근
      2003.12.07 10:47
    • 장태원
      2003.12.08 19:06
      서버에 CMD 에서 ping 을 때려줍니다. c:\> ping dnsserverip -t 바로 확인가능하고 이게 제일 간...
    • 강진호
      2003.12.18 19:55
      안녕하세요? 혹시 sql과 접속이 끊기는 부분에 대한 문제 때문이시라면, disconnect proferty를 이용...
    • 김기원
    • 2003.12.06 04:31
    • 4 COMMENTS
    • /
    • 11 LIKES
    • 김경록
      2003.12.06 04:42
      Thread를 이용해서 메모리에 특정 클래스/변수를 동적으로 생성할때에 메모리 부분 문제가 발생합니다.. ...
    • 김기원
      2003.12.06 06:17
      답변 감사합니다.. 한가지만 더 물어보고 시픈데요... Synchronize를 이용했을때와 하지 않았을때의......
    • 김기원
      2003.12.06 06:29
      답변 감사합니다.. 한가지만 더 물어보고 시픈데요... Synchronize를 이용했을때와 하지 않았을때의......
    • 김경록
      2003.12.07 19:41
      Critical Area를 보시면, 특정 메모리에 다중 Access로 인한 Data 불일치 또는 경쟁에 대한 Lock이 발생하...
    • 초보
    • 2003.12.06 02:30
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2003.12.08 19:04
      디테일밴드를 A4사이즈에 맞게 키우시고 그 안에 한쌍의 세금 계산서 양식을 그려야 합니다 디테일밴드...
    • 초보
      2003.12.08 20:00
      델세상이 내려졌네여. 들어가 볼 수가 없습니다. 제발.. 저에게 따스~한 도움의 손길을...
    • 성더기
      2003.12.08 22:48
      멜로두 답변을 드렸습니다만.... 죄송함다..ㅡㅡ;; 우째된 일인지는 알아봐야 긋네요 요기(한델) 자료...
    • 이성훈
      2003.12.06 20:59
      음 오래전에 한 비슷한 걸 Delphi2.0으로 한 적이 있는데.. 기억이 가물가물 하네요.. 소스를 있는지 찾...
    • 초보
      2003.12.08 17:53
      필요하죠... 무지 필요합니다. 부탁드려요.
    • 장태원
      2003.12.06 03:15
      쿼리를 이용하는 방법이 좋을듯 하군요. 그룹으로 묶어서 다음페이지로 넘길수 있게 짜시면 될듯 합니다...
    • 초보
      2003.12.06 03:49
      저.. 좀더 자세히 말씀해 주실수는 없는건가요?
    • 노정숙
    • 2003.12.06 02:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김수호
    • 2003.12.06 02:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2004.01.09 19:39
      설치시 셋업형태로 프로그램을 설치하는것이 아니라 복사후 레지스트리 등록방식이기 때문입니다. BDE설...