Что нового

[Массивы] Принципы работы с массивом

igorit

Новичок
Сообщения
25
Репутация
0
Всем добрый день.
Имеется ini-файл (словарь) я пытаюсь его считать в массив что бы потом обрабатывать данные. Но постоянно вылазят какие-то ошибки. Код:
Код:
Global $Array[33][9][400]
For $pp = 1 To 32
   for $pp2 = 1 To 12
	  $ii = 0
	  While 1
		 $ii=$ii+1
		 $pp3 = IniRead(@ScriptDir & "\Resources\AllWords.ini", "WordLen_" & $pp & "_" & $pp2, $ii, "NotFound")
		 If $pp3 = "NotFound" Then ExitLoop
		 ;MsgBox(64,"",$pp3)
		 $Array[$pp][$pp2][$ii] = $pp3
		 ;$line = $Array[$pp][$pp2][$ii]
		 ;MsgBox(64,"",$line)
	  WEnd
   Next
Next
Во время выполнения выдает ошибку:
Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$Array[$pp][$pp2][$ii] = $pp3
^ ERROR

Словарь прикрепил. Размер словаря заранее неизвестен, потому задать четкую размерность массива не получится. Брал немного с "запасом"
В чем может быть причина?

P.S. пытался найти ответ по форуму, но поиск почемуте не хочет принимать запросы состоящие более чем из 1 слова, выдает ошибку "запрос должен быть длиннее 2-х букв". Пробовал разные варианты запроса - результат тот же, а по одному слову "массив" искать бесполезно - слишком много сообщений находит.
 

Вложения

  • AllWords.rar
    196.2 КБ · Просмотры: 5

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
Global $iDims = 400
Global $Array[33][13][$iDims]

For $pp = 1 To 32
	For $pp2 = 1 To 12
		$ii = 0
		
		While 1
			$ii += 1
			$pp3 = IniRead(@ScriptDir & "\Resources\AllWords.ini", "WordLen_" & $pp & "_" & $pp2, $ii, "NotFound")
			If $pp3 = "NotFound" Then ExitLoop
			;MsgBox(64,"",$pp3)
			
			If $ii >= $iDims Then
				$iDims *= 2
				ReDim $Array[33][13][$iDims]
			EndIf
			
			$Array[$pp][$pp2][$ii] = $pp3
			;$line = $Array[$pp][$pp2][$ii]
			;MsgBox(64,"",$line)
		WEnd
	Next
Next
 
Автор
I

igorit

Новичок
Сообщения
25
Репутация
0
CreatoR, спасибо большое!
А как можно сделать проверку на существование элемента массива? То есть если я обращусь к массиву $Array[33][13][401] то Autoit выдаст ошибку. Как можно этого избежать (при условии что размерность заранее не известна)?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
igorit
Код:
IsArray()
 
Верх