본문 바로가기
프로그래밍/delphi

Variant array count 알아내기! delphi

by 메르세데쓰 2017. 9. 17.
반응형

 

 

DELPHI의 Variant형 배열의 count를 알아내는 방법입니다.

 

String이나 Integer형의 배열 같은 경우...

 

hight( array_name) (일차원)혹은.. hight( array_name[0]) (이차원)이런 식으로  Count를 확인할 수 있지만 Variant형은 좀 다릅니다. 

 

 

간단한 예로 버튼에 테스트해 보았습니다.

 

Variant의 2차원 배열입니다.  쉽게 Grid를 생각하시면 됩니다.

 

Col := 3 , Row := 5   // 0~3 , 0~5 이므로 4 * 6의 Grid입니다.    좀 헷갈리네요..

 

VarArrayCreate 함수를 이용하여 배열처럼 만들 수 있습니다.

 

High값은..   0, 1이 아님 주의!

VarArrayHighBound( 배열이름, 1 )  <-- 2차원 배열의 첫 번째 --> Col

VarArrayHighBound( 배열이름, 2 )  <-- 2차원 배열의 두 번째 --> Row 

 

Low값은

 VarArrayLowBound( .... )

 

 

 

그래서 선언한 값을 아래처럼 찍어보면  3, 5가 나옵니다.  혼동하기 쉽습니다.  

 

저도 Count 때문에 빈번하게 실수를 합니다.   

 

0~3까지 Count를 해야 하기 때문에  사이즈는 4 , 6 이 되겠습니다.

 

 

 

그리드로 표현해보면, 2차원 배열이 아래와 같습니다.

 

너무 간단한 예제이기 때문에 ..

 

 

 

 

 

배열을 아예 없애버리시려면

 

VarClear(배열이름)를 하시면 됩니다.

 

그렇다고.... VarArrayCreate로 정의 한 사이즈는 그대로이고 안에 있는 값만 초기화되는 건 아닙니다.

 

그냥 사라져 버립니다.  그래서.. 

 

이후에 vv[0,0] := 'test';  이렇게 하면 EVariantInvalidArgError 오류가 발생합니다.

 

안에 있는 값만 다시 초기화하려면.. 부분적으로 null을 대입해주시던가 아니면  VarArrayCreate로 다시 재생성해주셔야 합니다.

 

 

 

반응형

댓글