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
[9962] [질문] 레코드 사이즈를 재설정할 수 있나요?
델파이초보 [kazenoko] 867 읽음    2004-12-08 20:59
안녕하세요.

다음 예에서 setlength가 안되는 이유를 모르겠네요 -_-;

1. main_call.pas 파일...
procedure TForm1.main_callF
var
  recA : array of REC_DATA;
  count : Integer;
  rv : Integer;
begin
  rv := REC_test(count, recA);  // func_all.pas 콜
  //
  // REC_test함수로부터 받은 recA 레코드 값을 출력....
  //
end;

2. func_call.pas 파일
type
  REC_DATA = record
     rec_a : Char;
     rec_b : Integer;
  end;

function REC_test(var count : Integer;
                 var recA : array of REC_DATA):Integer;
var
  i : Integer;
begin
  // DLL로부터 count 값을 받아옴
  count := C_DLL_API();

  // count 값만큼 recA를 증가
  SetLength(recA, count);
  // 컴파일시 Incompatiable types 라는 에러가 발생함.-_-;
  // main_callF 함수에서 SetLength(recA, 2) 라고 하면 잘 되는데 콜한 함수
  // 에서 SetLength 하게되면 타입에러가 발생...
 
  for I := 0 to count - 1 do begin
     recA[i].rec_a = C_DLL_API();
     recA[i].rec_b = C_DLL_API();
  end;

  REC_test := 1;
end;

Variants 타입일 경우 VararrayRedim 으로 재정의하면되지만 레코드의 경우
Dynamic array일 경우 사이즈를 어떻게 설정할 수 있습니까?
콜 하기전에 미리 사이즈를 잡아서 넘기면 되지만, 사이즈를 알 수 없을 때는...
SetLength 말고 다른 방법은 없습니까?

고견부탁드립니다. 즐거운 하루되세요!~

+ -

관련 글 리스트
9962 [질문] 레코드 사이즈를 재설정할 수 있나요? 델파이초보 867 2004/12/08
9963     Re:[질문] 레코드 사이즈를 재설정할 수 있나요? 류종택 1107 2004/12/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.