Q&A

  • 레코드형 변수에 대한 질문입니다...
일반 동적배열은



SetLength(변수명, 20);



이런식으로 동적으로 배열변수를 선언하는 걸루 알고 있습니다...



레코드형 변수도 가능한지 알고 싶습니다...



type

TTest_Rec = record

필드1 : Integer;

..............

..............

end;

var

TestRec : Array[0..n] of TTest_Rec;



위와 같이 함 n + 1개 밖에 선언할 수 없더군요...



2  COMMENTS
  • Profile
    김영석 2001.01.09 02:53
    레코드의 동적배열은 처음에 배열을 0..0 까지만 설정하는 겁니다.

    그러니까 array [0..0] of TTest_Rec 처럼 선언해 놓습니다.



    그리고 나서 SetLength 보다는

    GetMem 함수를 자주 사용하는데

    GetMem(TestRec, SizeOf(TTest_Rec)*n);

    하면 TestRec 는 Array [0..n-1] of TTest_Rec;

    처럼 n-1 개의 배열을 가집니다.

    그리고 거의 array [0..n-1] 처럼 선언한 것처럼

    사용할 수 있습니다만 실제로 TestRec[i] 처럼

    배열번호에 i 처럼 변수로 넣고 사용할 수는

    있지만 그냥 TestRec[1] 처럼 원래 선언된 [0..0] 을

    넘는 인덱스를 넣고 컴파일하면 아마 안될겁니다.



    이렇게 동적배열을 사용하면 유용한 경우가 많죠.



    왕초초초보 wrote:

    > 일반 동적배열은

    >

    > SetLength(변수명, 20);

    >

    > 이런식으로 동적으로 배열변수를 선언하는 걸루 알고 있습니다...

    >

    > 레코드형 변수도 가능한지 알고 싶습니다...

    >

    > type

    > TTest_Rec = record

    > 필드1 : Integer;

    > ..............

    > ..............

    > end;

    > var

    > TestRec : Array[0..n] of TTest_Rec;

    >

    > 위와 같이 함 n + 1개 밖에 선언할 수 없더군요...

    >

  • Profile
    왕초초초보 2001.01.09 03:56
    ...