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
[9963] Re:[질문] 레코드 사이즈를 재설정할 수 있나요?
류종택 [ryujt] 1107 읽음    2004-12-09 11:43
Type
  TDataType = Array of Integer;

//Procedure SetArraySize(var Data:Array of Integer);
Procedure SetArraySize(var Data:TDataType);
Begin
  SetLength(Data, 4);
End;

위의 소스를 참고 하세요.

델파이초보 님이 쓰신 글 :
: 안녕하세요.
:
: 다음 예에서 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 [질문] 레코드 사이즈를 재설정할 수 있나요? 델파이초보 868 2004/12/08
9963     Re:[질문] 레코드 사이즈를 재설정할 수 있나요? 류종택 1107 2004/12/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.