[VB6]배열의 기본
다들 아시겠지만, 모르면 지나치는 배열 사용의 주의 사항을 하나 적어보자 합니다. VisualBasic에는 배열을 선언하는 방법이 몇가지가 있습니다. 1. 정적 배열 선언하기. 사용될 배열의 갯수를 미리 알고 있다면 정적 배열을 선언 할 수 있습니다. 1) Dim arr(10) as Integer 2) Dim arr2(1 to 10) as Integer 2. 동적배열 선언 사용하고자 하는 요소가 변할때 사용을 합니다. redim 해서 사용을 하겠지요.. 지금 하고자 하는 말은 배열을 선언을 했을때 입니다. 위에서 예로 보인 배열 2가지가 있습니다. (arr, arr2) 비슷해 보이네요.. 조금 다른것 같기도 하고. 음.. 뒤에 갯수를 선언 하는것이 조금 다른데.. 갯수가 틀린가? 테스트를 해 보죠. Msgbox(UBound(arr)) '결과 10 Msgbox(UBound(arr2)) '결과 10 선언한 부분이 조금 다른데.. 결과는 같네요? 과연 같을까요? 다른점을 먼저 말하겠습니다. 1)의 경우는 arr(0) ~ arr(10) 까지 사용이 가능하고 2)의 경우는 arr(1) ~ arr(10) 까지 사용이 가능합니다. 1)처럼 선언을 하고, 배열의 요소를 arr(1)부터 사용을 했다면 불필요한 메모리를 하나 낭비하는 셈입니다. UBound는 배열 요소의 갯수를 나타내는 함수가 아니라, 배열 요소의 Max값을 나타냅니다. 그래서 1), 2)의 경우 모두 같은 결과를 보이구요.. LBound로 테스트를 하시면 다른 결과가 보일 겁니다. 얼핏 넘어가기 쉬운 문제지만, 저런 선언이 많이 있다면 당연히 효율이 떨어지겠지요. 작은것 하나부터 꼼꼼히 체크 하세요.. 참고로 "Option Base 1" 이 문장을 폼, 모듈의 처음에 입력하면, 배열의 요소는 1부터 시작합니다. |
http://www.devpia.com/forum/BoardView.aspx?no=2945&page=2&Tpage=34&forumname=vb_lec&stype=&ctType=&answer=