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로 다시 재생성해주셔야 합니다.




블로그 이미지

delphi개발자 메르세데쓰

C#,delphi,db,network,server,it 개발자 메르세데스입니다

댓글을 달아 주세요