Q&A

  • Delphi DLL 을 VC App에서 호출할 때
델파로 다이얼로그 및 DB 연결 모듈을 만들어 VC 에서 호출하고 있습니다.

VC에서 DLL의 stdcall Function으로 호출하고, DLL 에서 Sendmessage를 사용하여 VC App로 결과값을 던지는 모듈을 만들고 있습니다.

기능은 정상적으로 작동을 하지만, 불규칙적인 에러가 발생하고, App을 다운시키기도 합니다.

Dll 내에 상용 콤포넌트를 사용하여 작업을 많이 하는데...

Dll 처리 부분에서 문제를 해결해야 할지, 아니면 COM으로 변경하여 처리해야 할 지 고민하고 있습니다.

두 경우 (VS.NET 2003 과 Delphi 7)의 사용의 불안정성을 해결할 수 있는 방안이 있는지 궁금하여 문의드립니다.

Delphi 선언부분
<!--CodeS-->
procedure SetRootPath(sPath : PChar);stdcall;
function GetProjectManagerDlg(hOwner:HWND):HWND;stdcall;
<!--CodeE-->

선언과 호출은 정상적으로 되어 있기 때문에 작동에는 문제가 없는것 같습니다. 하지만 델파이의 다이얼로그에 여러 콤포넌트를 추가한 후에 해당 기능을 VC 에서 호출하면 문제가 생기는 것같습니다.

VCL로 제공되는 상용 콤포넌트를 사용했구요

VC 와 Delphi 간의 메모리용량에 따른 문제가 발생하는 것인지???
2  COMMENTS
  • Profile
    타락천사 2009.02.10 18:53
    아마 DLL 에 있는 델파이 폼에서 문제가 발생하는 것으로 보입니다.

    델파이 폼에는 전역적으로 TApplication 이 설정되어 씁니다만...

    VC 에는 TApplication 이 없어서 문제가 발생하죠..

    원인을 알았으니, 해결 방법을.. 검색해 보세요.. (저도 모릅니다.)
  • Profile
    조성환 2009.02.10 22:25
    감사합니다.

    해결방법을 검색해보도록 하겠습니다.
    • 타락천사
      2009.02.12 21:24
      그렇군요.. 저도 다른 API와 뭐가 다를까 궁금하군요.. 컨버젼 하기 구찮아서 C++ Builder 로 해봐야 겠...
    • 최용일
      2009.02.12 22:22
      오래전부터 Project JEDI에서 컨버팅을 해오고 있었던 내용들이군요... http://jedi-apilib.sourcefor...
    • 송 시중
      2009.02.12 22:26
      와.. 좋은 사이트를 알았네요. 감사합니다.
    • 김동원
      2009.02.17 17:48
      CreateProcess의 원형은 다음과 같습니다. BOOL CreateProcess( LPCTSTR lpApplicationName, LP...
    • Elpira
    • 2009.02.12 08:48
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2009.02.11 00:58
      아주 옛날에 테스트용으로 ActiveX 로 바꿔봤던 기억이 있네요. http://www.delmadang.com/ 델마당의...
    • Marek
      2009.02.11 22:24
      예 님의 생각이 맞습니다만 ActiveX프로젝트를 일단 생성하면 Propert와 Event가 상당부분 없어지기 때...
    • 한경수
    • 2009.02.10 21:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Marek
      2009.02.11 22:21
      서버측의 방화벽에서 11433port가 Any to Any로 되어 있는지 확인해 보시는 것이 좋을것 같습니다. BDE...
    • JM
    • 2009.02.10 14:21
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2009.02.10 18:55
      탭 위치에 탭 갯수만큼 TImage 를 놓고 탭을 대신하는 방법이 깔끔 할 겁니다..
    • 소울해커
      2009.02.10 20:08
      TabControl의 마우스 다운 이벤트에서 if PtInRect(Rect(R.Left + 160, R.Top + 8, R.Left + 160 + Im...
    • JM
      2009.02.10 20:14
      답변감사합니다 ^^
    • 고명수
    • 2009.02.10 08:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2009.02.10 20:09
      TransprentColor 속성이 있을텐데 그걸 Color 값과 맞춰 보세요.
    • 조성환
    • 2009.02.10 02:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2009.02.10 18:53
      아마 DLL 에 있는 델파이 폼에서 문제가 발생하는 것으로 보입니다. 델파이 폼에는 전역적으로 TAppli...
    • 조성환
      2009.02.10 22:25
      감사합니다. 해결방법을 검색해보도록 하겠습니다.
    • 박종철
      2009.02.10 00:14
      자답입니다. Aplication.MessageBox('중복된 파일을 덮어쓰시겠습니까?', '다른 이름으로 저장', MB_Y...
    • 소울해커
      2009.02.09 21:07
      TMS 그리드고 번호가 단순히 1부터 RowCount까지만 들어간다면 ContextGrid->AutoNumberCol(0); ...
    • 박진수
      2009.02.09 22:36
      우왓!!! 너무 잘됩니다!!!! ㅜ.ㅜ 소울해커님 너무 고맙습니다!!! 사랑해요! 뽀뽀라도 해드리고 싶...
    • 타락천사
      2009.02.09 23:46
      TMemoField 에서 TStringList 에 받아서 스트링그리드의 셀에 넣으면 될 겁니다. VAR aBlobS...
    • 전봉수
      2009.02.12 01:45
      타락1004님 답변 갑사합나다. 설명하신 대로 해보려하니 어떻게 소스코드를 만들어야할지 황당 합니다. ...
    • 소울해커
      2009.02.17 03:46
      TMemoField 부분을 쿼리에서 불러온 메모필드로 넣으시고 MyList에 값이 들어가고 나면 StringGrid...
    • 21세기
    • 2009.02.09 07:39
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2009.02.09 19:17
      원하는것이 무엇인지요???? 파일을 복사하려는것이 목적인지... 등록정보에 뭔가 표시할려고 하는것이...
    • 21세기
      2009.02.09 23:02
      파일의 전체 사이즈는 같게하고, 파일의 특정한 일부분만 복사하고 싶습니다.
    • 타락천사
      2009.02.09 23:18
      1. 크기 100 MB TFileStream.Size := 100 MB 2. 일부분 복사 TFileStream.Posistion := 0; 한 ...
    • 21세기
      2009.02.10 06:54
      먼저, 답변 감사드립니다. var FS: TFileStream; Buf: array[0..1024] of char; begin FS...
    • 타락천사
      2009.02.10 18:49
      질문 : FS.Write(Buf, SizeOf(Buf)); <--- 이부분에서 속도가 느려지는군요. 빠르게 할 수 없을까요...
    • 이정욱
      2009.02.12 13:19
      빠르게 할수 있습니다. 버퍼 사이즈를 늘리세요. 1k는 너무 작네요.
    • 타락천사
      2009.02.13 00:23
      헉.. 한 질문에 여러 다른 해석이 있군요..
    • 최용일
      2009.02.09 19:23
      눈으로 봐도 utf8인지 알 수 없어요... 디코딩할 필요가 없다는 것을 알아서 안하는것이 아니라 디폴트...
    • 조일현
    • 2009.02.08 00:12
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2009.02.09 23:14
      try if frmMain.ComPort1.Connected then <<<<< 이부분에서 위의 오...
    • 조일현
      2009.02.10 00:11
      ㅠㅜ 타락님께서 가르쳐 주신 방법으로 해보았으나 되지 않습니다... 위의 그림 파일과 같은 에러창이 a...
    • 타락천사
      2009.02.10 00:35
      CPort 3.1 은 사용해 본적이 있습니다. 안정적인 버젼이었던 걸로 기억 합니다. 아마도, // if fr...
    • 조일현
      2009.02.10 02:52
      네 frmMain 에 nil이 들어있네요 그럼 이걸 어떻게 해야 하나요?? 써주지 말아야 되나요?
    • 박무개
    • 2009.02.07 02:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 와이군
      2009.02.07 10:34
      function Format(const Format: string; const Args: array of const): string; Format 함수의 Args인...
    • 박무개
      2009.02.09 17:12
      덕분에 해결 하였읍니다. 답변 감사합니다. 즐거운 하루 되세요.
    • 윤병길
    • 2009.02.07 01:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2009.02.09 23:10
      쩝.. 스크린의 가로세로 인치당 도트수가 같은 경우 값 얻기. PixelPerInchY := Screen.PiexelsPerIn...
    • Marek
      2009.02.09 23:16
      참고하십시요. Bitmap의 경우에는 가로세로의 크기만 있기때문에 아래코드의 Dpi는 의미가 없습니다. ...
    • 후초보
    • 2009.02.06 22:42
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2009.02.07 01:01
      Selected는 노드가 선택되어 있는지 아닌지를 알려주는 값입니다. True일 때 선택되어져 있음. 선택을 ...
    • 후초보
      2009.02.07 03:56
      감사합니다. 가르켜 주신대로 해 보았는데 선택된것을 확인해 보니 선택은 되어있는데 마우스로 선택한 ...
    • 최용일
      2009.02.07 04:48
      treeComp.AddToSelection(Node); 스크롤은 WM_VSCROLL로 검색해보세요.
    • 후초보
      2009.02.07 23:56
      감사합니다. 그런데.. AddToSelection 메소드(?)가 없습니다. 컴퍼일하니 treeComp.AddToSelection ...
    • 최용일
      2009.02.09 19:15
      아 protected였네요... Selected를 이용하면 쉽게 할 수 있네요... 좀 어렵게 생각했었군요... 이거 다...
    • 후초보
      2009.02.09 23:42
      감사합니다. 덕분에 해결책이 보이기 시작합니다. 이제 Scroll 을 해결 해야겠습니다. 고맙습니다.
    • 지이레크
      2009.02.13 19:43
      타락 천사 님.. 감사 글을 써 주셔서 감사 합니다. 그런데 써주진 방법은 파일을 자신의 PC 에 저...