Что нового

[Массивы] Массивы в AutoIT. Как узнать, что индекс массива валидный?

erlik

Продвинутый
Сообщения
317
Репутация
84
Есть проблема с удалением элементов массива во время его итерации.
Вылетаю с такой ошибкой: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
Суть ее в принципе понятна - непонятна как ее обойти.Проверять на существование элемент массива с данным индексом? Тогда как?
Есть вообще русскоязычные мануалы по работе с массивами в AutoIt? А то после lua (к слову - там просто гениальные массивы вмещающие любые типы данных, с динамическим расширением размерности и любыми типами индексов - int, float, string, userdata ) никак не могу въехать как работать с автоитовскими массивами.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
erlik,
Код:
Dim $aArray[5] = [False, '22', 3.3, 44, Binary(55)];индексы: 0;1;2;3;4; + 5;6;7
$iNewUbound = 0
$iUbound = UBound($aArray)
MsgBox(64, 'Info', 'В массиве $aArray сейчас ' & $iUbound & ' элементов')
For $i = 0 To 10
	If $i = $iUbound - 1 Then
		$iNewUbound = $iUbound + 3
		ReDim $aArray[$iNewUbound]
		MsgBox(48, 'Info', 'Увеличили массив на 3 элемента')
		For $j = $iUbound To $iNewUbound - 1
			$aArray[$j] = Random(100, 999, 1)
		Next
	EndIf
	If $i > $iUbound - 1 Then
		If $i > $iNewUbound - 1 Then
			MsgBox(16, 'Error', $i & ' - неправильный индекс')
		Else
			MsgBox(64, 'Info', 'Элемент с индексом ' & $i & ' = ' & $aArray[$i])
		EndIf
	Else
		MsgBox(64, 'Info', 'Элемент с индексом ' & $i & ' = ' & $aArray[$i])
	EndIf
Next
MsgBox(64, 'Info', 'В массиве $aArray уже ' & $iNewUbound & ' элементов')
 
Верх