Q&A

  • 구조체배열 DLL 로 넘기고 받는방법 질문.

단일 구조체를 DLL 로 인자로 넘기고 받는것은 해보았습니다.

 

이번에 델파이로 구조체 배열을 값을 채워서 리턴값으로 구조체 배열을 받게 해봤으면 하는데.

가능할런지요? 혹시 해보신분 계신가요?

 

어줍짢은 생각에 구조체 배열을 선언하여 동적으로 생성한다고 하면,

1.  구조체 배열을 리턴값으로 넘기는 것이 가능한지요?

2.  만약 가능하다면, 구조체 배열을 내부에서 선언시 동적배열은 함수에 값을 리턴하기 전에

     메모리를 해제하면 안되기 때문에 (거기다가 동적 할당) 이므로 메모리가 계속 증가되지는 않는지요?

3. 아니라면 구조체 배열을 정적으로만 선어해야만 하는지요?

4. 만약 가능하다면 참고할만한 페이지라던가.. 몇자 적어주시면..많은 도움이 될 것같습니다.

 

읽어주셔서 감사합니다. 혹시 해보신 분이라던지..아시는 분 조언좀 부탁드립니다.

 

감사합니다.

 

델파이 DLL( 구조체 배열 <동적 또는 정적> )  - 타 프로그램에서 import 하여 DLL 사용.

 

3  COMMENTS
  • Profile
    베헤리트 2013.10.10 21:50
    예전에 저는 sharememory를 사용해서 구조체를 DLL에서 사용했습니다. sharememory를 이용하세요.
  • Profile
    이정욱 2013.10.10 22:19
    포인터로 주고 받으셔도 가능합니다.

    ...
    TarrOfMyRecord = array[1..1000] of TmyRecord
    ParrOfMyRecord = ^TarrOfMyRecord;

    ---------------------------------------------

    DLL:

    function getNotes(someRecord: PArrOfMyRecord):boolean; stdcall;
    begin
    someRecord^[1].tgl:= now;
    ...

    ---------------------------------------------
    Program:

    ...
    begin
    if getNotes(@myRecord) then
    for i:= 1 to 1000 do memo1.lines.add(myRecord[i].notes);
    ...
  • Profile
    인텔리센스 2013.10.11 19:35

    좋은 정보네요