Что нового

Функция Redim

RRRinat

Новичок
Сообщения
3
Репутация
0
Добрый день уважаемые!
Прошу небольшой помощи, я немного не разобрался с функцией Redim.
У меня многомерный массив, при изменении размера массива с помощью этой функции, у меня выдается ошибка:

---------------------------
AutoIt Error
---------------------------
Line 81 (File "E:\Documents and Settings\Admin.MICROSOF-68D142\Мои документы\device\deviceIdentifer.au3"):

$mass[$i][0] = $key
^ ERROR

Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
---------------------------
ОК
---------------------------
Пример:
Код:
Dim $mass[1][4]
$i = 0
While 1
	$i +=1
...
  ReDim $mass[$i][4]
  $mass[$i][0] = $key
  $mass[$i][1] = $name
  $mass[$i][2] = $class
  $mass[$i][3] = $ico
WEnd


Что я делаю не так? Как сделать правильно
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
У тебя массив 2х5 по какому условию прирываешь цикл ? просто как я понял у тебя $i от нуля крутит до бесконечности...
 
Автор
RRRinat

RRRinat

Новичок
Сообщения
3
Репутация
0
Не до бесконечности, а до тех пор пока не появится ошибка.
Я ее тут просто не описал.
Вот так:

Код:
Dim $mass[1][4]
$i = 0
While 1
    $i +=1
...
If @error <> 0 then ExitLoop
...
  ReDim $mass[$i][4]
  $mass[$i][0] = $key
  $mass[$i][1] = $name
  $mass[$i][2] = $class
  $mass[$i][3] = $ico
WEnd
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
RRRinat
Я думаю, ошибка возникает из-за того что первая размерность массива 1, но счет ведется с нуля, поэтому $i может быть равно только 0, а при $i=1 возникает выход за границы массива...
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Код:
Dim $mass[1][4]
$i = 0
While 1
    ...
If @error <> 0 then ExitLoop
...
  ReDim $mass[$i][4]
  $mass[$i][0] = $key
  $mass[$i][1] = $name
  $mass[$i][2] = $class
  $mass[$i][3] = $ico
$i +=1
WEnd


попробуй после цикла увеличивать параметр $i так как ты его обозначил нулем а у тебя для него значения 0 и 1 и плюсуешь он сразу получается один и когда 1+1 он уже равен двум ну или так:

Код:
Dim $mass[1][4]
$i = 0
While 1
    $i +=1
...
If @error <> 0 then ExitLoop
...
  ReDim $mass[$i][4]
  $mass[$i-1][0] = $key
  $mass[$i-1][1] = $name
  $mass[$i-1][2] = $class
  $mass[$i-1][3] = $ico
WEnd



Добавлено:
Сообщение автоматически объединено:

snoitaleR
опередил с постом :smile:
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
Guezt
Зато у тебя с примером... :smile:
 
Автор
RRRinat

RRRinat

Новичок
Сообщения
3
Репутация
0
Да, все работает.
Большое спасибо вам за помощь!
 
Верх