Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[12293] Re:Re:Re:구조체 리스트를 리턴 값으로 받을 수 있는지. 마무리 정리 합니다.
박귀정 [redox] 1933 읽음    2008-11-24 16:29
여기 저기 참고하여 무엇이 문제인지 찾았습니다.
그래서 정리하는 의미에서 몇자 적어봅니다.

// 구조체에 대한 record 생성 부분은 생략 합니다. GList라는 record를 생성함.

PGList = ^GList; // record에 대한 포인터 선언

var
   List, StartList : PGList;
begin
   List := GetGList();
   StartList = List; // List 포인터를 증가하면서 데이터 처리를 해야 함으로 시작주소를 저장해 놓음.

    for Loop := 0 to nCnt-1 do   // nCnt에 대한 것은 다른 함수를 통해 넘겨 받음.
    begin
       // List에 대한 내용 처리.
      Inc(List);  // 포인터에 대한 증가 C에서는 List++;
    end;
    List = StartList; // 원래의 주소 값으로 바꿔줌.
end;

델파이를 처음하다보니 증가에 대한것을 잘 이해를 못했고
C에서 처럼 배열은 포인터다라는 생각을 가지고 있다 보니 해결이 안 되었던것 같습니다.
그리고 record 를 생성하면서 packed를 사용하다 보니 보내는 쪽과 데이터크기가 맞지 않았습니다.

구조체 데이터를 넘겨받을 때 데이터가 이상한 것은
  1. 구조체와 record 간의 데이터 타입 변환이 잘 되었는지 확인.
  2. packed를 양쪽 모두 사용하던지 모두 사용 안하던지 확인.

그러면 전혀 문제없이 사용이 가능할 것으로 봅니다.

조금 이나마 도움이 되었으면 합니다.

박귀정 님이 쓰신 글 :
: 답변에 감사드립니다.
:
: 그러면 그냥 레코드 포인터만 선언해서 넘기면 된다는 말씀이신지...
: 레코드 포인터만 넘기면 된다면은
: 결과로 받은 List를 List[0] , List[1] 형태로해서 개수 만큼 사용하면 되는 건가요.
: 함수 선언은
: Function GetGList() : List; stdcall; external 'BugAPI.dll';
: 이렇게 하면되나요?
:
: kylix 님이 쓰신 글 :
: : var
: :   List: ^GList;
: : begin
: :   List := GetGList;
: : end;
: :
: : 박귀정 님이 쓰신 글 :
: : : VC++ DLL에서 생성한 struct data list를 델파이에서 record 포인터로 받을 수 있는지요?
: : :
: : : 예를들면
: : : typedef struct _GList
: : : {
: : :     UINT1    status;   
: : :     UINT4      wpx;
: : :                 UINT4      wpy;
: : : }GList;
: : :
: : : === dll 함수 ===
: : : GList * PASCAL GetGList() ;
: : :
: : : 위와같은 구조체에서 100개의 데이터를 dll에서 메모리 할당해서 델파이로 넘긴다고 한다면
: : : 그냥 record 포인터로만 받으면 되는지... 받을 수 있다면 어떻게 하면 되는지 알려주십시오.

+ -

관련 글 리스트
12290 구조체 리스트를 리턴 값으로 받을 수 있는지. 박귀정 2109 2008/11/19
12291     Re:구조체 리스트를 리턴 값으로 받을 수 있는지. kylix 1995 2008/11/20
12292         Re:Re:구조체 리스트를 리턴 값으로 받을 수 있는지. 박귀정 1885 2008/11/20
12293             Re:Re:Re:구조체 리스트를 리턴 값으로 받을 수 있는지. 마무리 정리 합니다. 박귀정 1933 2008/11/24
12295                 Re:Re:Re:Re:구조체 리스트를 리턴 값으로 받을 수 있는지. 마무리 정리 합니다. kylix 2236 2008/11/25
12294                 Re:Re:Re:Re:구조체 리스트를 리턴 값으로 받을 수 있는지. 마무리 정리 합니다. (관련 소스좀 올려 멀더 2654 2008/11/25
12296                     Re:Re:Re:Re:Re:구조체 리스트를 리턴 값으로 받을 수 있는지. 관련 자료 입니다. 박귀정 2909 2008/11/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.