Q&A

  • dll에 파라메터 넘길때 제약사항이 있나요?
dll로 파라메터 넘길때 원래 string값은 안넘어가고
pchar 값만 넘어가나요?
string은 안되고 pchar는 되더라고요?
이유가 뭘까요..

그리고 object 넘길때는 어떻게 하나요?
dll 의 프로시져에서
프로시져 프로시져명(sender : Tobject)   로 해서
(sender as Tquery).sql.text 하니까 에러 나던데요..

아! 모르는게 많네요...
1  COMMENTS
  • Profile
    KDDG_BaSTaD 2004.03.31 21:46

    ==> 쉽게 말하면 델파이에서 DLL 이 나온게 아니라 C 부터 DLL 이 있어와서 그걸 지원하다보니 Delphi가 그걸 따르는거지요..  하지만.. DLL 을 그냥 생성해 보시면 프로젝트 파일에 이렇게 나온것을 확인할 수 있습니다.

    { Important note about DLL memory management: ShareMem must be the
      first unit in your library's USES clause AND your project's (select
      Project-View Source) USES clause if your DLL exports any procedures or
      functions that pass strings as parameters or function results. This
      applies to all strings passed to and from your DLL--even those that
      are nested in records and classes. ShareMem is the interface unit to
      the BORLNDMM.DLL shared memory manager, which must be deployed along
      with your DLL. To avoid using BORLNDMM.DLL, pass string information
      using PChar or ShortString parameters. }

    쉽게 말씀드리면, 파라미터에 델파이의 String 또는 클래스를 넘기려면 DLL uses절 첫번째에 ShareMem 을 반드시!!!! 추가해야된다는거죠..

    그러니까..String 파라미터도 지원됩니다..!! 다만 ShareMem이라는 델파이가 지원하는 메모리관련 유닛을 추가해줘야하지요...

    단점이라 하면.. DLL 사이즈가 커집니다 >_<.. 그리고!! 다른 컴파일러에서 사용하실 수 없겠지요... -_-;; C++ Builder 에서는 되리라봅니다. ^^;; 하지만 기냥 C/C++ 또는 MS VC 기타. 프로젝트에서 사용하실 수는 없습니다.

    호환되게 하시기 위해서는 순수 C 스타일의 방식으로 코딩하셔야겠지요.. Char*(PChar) 로요...

    도움이 되셨길...

    by KDDG 만수 ㅔ 이~~
    • 진돌
    • 2004.03.31 22:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최수림
      2004.03.31 22:54
      html 파일에서 자바스크립트로 파라미터 값으로 지정해주시면 될거 같은데요
    • 연기훈
      2004.03.31 21:32
      위에서 아래, 좌우 출력이.. 무얼 말습하시는 건지 모르것네요... 종이 방향 가로, 세로 를 말습히시...
    • 전명현
      2004.03.31 22:03
      제 질문이 좀 모호했군요.. 보통은 ColumnHeader, Detail Band 순으로 해서, 위에서 부터 한 줄씩 ...
    • 너구리
      2004.03.31 22:31
      퀵리포트에서는 안될겁니다. 무조건 위에서 아래로 밖에 안되더군요.. 하이퍼 리포트는 되더군요..
    • 민상익
    • 2004.03.31 21:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_BaSTaD
      2004.03.31 21:46
      ==> 쉽게 말하면 델파이에서 DLL 이 나온게 아니라 C 부터 DLL 이 있어와서 그걸 지원하다보니 Delphi...
    • 연기훈
      2004.03.31 20:40
      csv 파일은 일반 text 파일입니다. access나 exel 프로그램에서 바로 변환도 가능하고요.. 프로그램...
    • Robin
    • 2004.03.31 20:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.03.31 20:32
      안녕하세요. 최용일입니다. 전체화면 얻는것과 같은 방식으로 하시면 됩니다. 단지 DC가 전체화면이 ...
    • 박수영
    • 2004.03.31 19:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.31 19:16
      A테이블의 내용이 B테이블에 그대로 있는 것 같은데 B만 읽어오면 안되나요???? B만 읽어와서 작업이 가...
    • Galaxy
      2004.03.31 20:53
      안녕하세요 답변 감사 합니다. 저도 B만 읽어오면 좋겠지만 현 사항은 그렇지가 않습니다. 아래 테이...
    • 너구리
      2004.03.31 22:25
      오라클에서는 아웃조인이 한쪽으로밖에 걸리지 않습니다. 오라클인거 같은데..어떤디비 인지는 잘모르겠...
    • Galaxy
      2004.04.01 18:17
      답변에 감사 드립니다. 안녕하세요 수고 많습니다. MS-SQL7.0을 사용하고 있습니다. 님의 말씀대로 is...
    • 송태성
    • 2004.03.31 17:54
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.31 20:18
      TForm.OnActivate, OnDeactivate 는 같은 애플리케이션에서의 폼끼리 활성화,비활성화 될때만 발생을 하구...
    • 송태성
      2004.03.31 22:51
      그대로 코딩했는데도 'IN'은 먹더군요 그런데 모달 폼이라서 그런지 'OUT'  는 안먹더군요.. ...
    • 한원희
      2004.03.31 20:16
      안녕하세요. 한원희입니다. NC(Non-Client) 메시지는 모달폼 외부에 대한 동작으로 발생하는 것이 아니...
    • 송태성
      2004.03.31 22:53
      자세한 답변 감사드립니다. 그런데 말씀하신 방법을 모르겠네요. 일단 제가 필요한 코딩은 모달폼을 ...
    • 루이
    • 2004.03.31 08:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.31 19:21
      for문을 이용을 해서 돌리면서 비교를 하면 안되나요??? tmp := ''; for i := 1 to grid1.rowcount...
    • 너구리
      2004.03.31 22:29
      말그대로 입니다. Statement를 기대했는데 procedure가 나왔넹.. 저에러가 난 뒷부분을 보십시오.. ...
    • 왕초보
    • 2004.03.31 06:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.31 17:54
      datamodule에 연결된 query에다 직접 한번 해보세요... 전 아래와 같이 안 해봐서리...
    • 배수민
    • 2004.03.31 06:22
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2004.03.31 22:01
      안녕하세요 이중철입니다. 혹시 님 Mobile업체에 근무 하십니까? 소스를 보니 Terminator 문자 $FF ...
    • 최용일
      2004.03.31 20:36
      안녕하세요. 최용일입니다. Sharemem유닛을 쓸 경우 이 유닛에서 메모리 관리를 해주니까 괜찮지만... ...
    • 배수민
      2004.04.01 02:19
      조언 많은 참조 하겠습니다. 다음에 하면서 발생되는 문제가 있으면 그때 또 도와주시면 고맙겠습니다. ...
    • 한원희
      2004.03.31 03:24
      안녕하세요. 한원희입니다. 님이 원하시는 것과 동일한 기능을 하는 것이 이미 델파이에 있습니다. bpl ...
    • 이중철
      2004.04.01 03:18
      그런데 문제는 rtl.bpl이 depend 하네요 에궁 rtl.bpl도 같이 까는거 빼고는 거의 문제 없네요 ^^
    • Crazy
      2004.03.31 02:28
      if image1.Picture.Graphic = nil then begin      showmessage( '없음' ); end el...
    • Galaxy
      2004.03.31 18:23
    • 김도형
    • 2004.03.31 00:38
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 연기훈
      2004.03.31 01:38
      흠.. 비트 연산하는 간단한 건데... 델파이로 할려니.. 델파이론 첨이라 맞는지 잘 모르것네요.. 다...
    • 이중철
      2004.03.31 01:53
        cnt - 1   8 - 1 => 7 저도 답변 썼다가 지웠어요 같아서요 ^^
    • 김도형
      2004.03.31 03:16
      맞게 했는지 모르겠는데요... 아래처럼 했는데 계속 ERROR가 나네욤.... =========================...
    • 연기훈
      2004.03.31 20:38
      crc 는 const 에 선언 하는 것이 아니고 var 에서 선언해주어야 합니다. procedure TForm1.Button1...
    • 이중철
      2004.03.31 22:20
      왠만하면 Data : Array of Byte; 이런식 또는 다른것으로 하시기를 아래에 보니 스트링에 해버렸네요 ...
    • goodlsw
    • 2004.03.30 21:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.30 22:18
      재생각엔 그 방식대로 하는건 좋지 않다고 봅니다.
    • 조경모
    • 2004.03.30 21:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.30 21:35
      필드가 숫자형인데 문자를 넣었다거나 아니면 날자의 형식이 다르다거나 한것 같습니다... 우...