Что нового

На двух одинаковых компьютерах по разному работает

SergVrn

Новичок
Сообщения
87
Репутация
2
Здравствуйте.
Помогите решить проблему.
На одном компьютере скрипт работает нормально.
На другом компьютере - тот же в точности скрипт выдает ошибку.
Везде стоит одна и та же версия autoit, везде одна и та же операционная система Windows 7

Выдает такую ошибку:
Array variable has incorrect number of subscripts or subscript dimension range exceeded
If $aData[11][$i] <> 0 Then
If ^ ERROR

И подсвечивает кусок кода:
Код:
Func _DeleteData($i)
   If $aData[11][$i] <> 0 Then
      For $iP In $aData[11][$i]
         ProcessClose($iP)
      Next
   EndIf
   _ArrayShift($aData, $i)
EndFunc

Что это такое может быть и как это поправить ?
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Нет запрашиваемого индекса массива. Нужно проверять массив на количество индексов перед использованием
 
Автор
S

SergVrn

Новичок
Сообщения
87
Репутация
2
Нет запрашиваемого индекса массива. Нужно проверять массив на количество индексов перед использованием
А почему на другом компьютере работает тот же самый скрипт - и не требует проверки массива на количество индексов ?
 

IMStrelcov

CTPEJIbLLOB
Сообщения
253
Репутация
64
Не возможно ответить на ваш вопрос, не зная каким образом вы строите этот массив, в ручную или автоматически.
 
Автор
S

SergVrn

Новичок
Сообщения
87
Репутация
2
Не возможно ответить на ваш вопрос, не зная каким образом вы строите этот массив, в ручную или автоматически.
Ну наверное автоматически строится массив.
Я во всяком случае - ничего туда руками не вписываю.

На одном компьютере нормально работает, не выдавая ошибки.
На втором компьютере уже выдает ошибку.
 

IMStrelcov

CTPEJIbLLOB
Сообщения
253
Репутация
64
Ну наверное автоматически строится массив.
Я во всяком случае - ничего туда руками не вписываю.

На одном компьютере нормально работает, не выдавая ошибки.
На втором компьютере уже выдает ошибку.
Тогда на основании чего строится массив? Так как я понял, массив в вашем коде связан с процессами, а значит на разных машинах их выполняется разное кол-во, вот и массив разного размера.
 
Автор
S

SergVrn

Новичок
Сообщения
87
Репутация
2
Тогда на основании чего строится массив? Так как я понял, массив в вашем коде связан с процессами, а значит на разных машинах их выполняется разное кол-во, вот и массив разного размера.
Нет, количество процессов у них - одно и то же.
Я ничего не меняю ни в файле экселевском с которым скрипт связан, ни с самим скриптом.
Это точные копии во всех смыслах.
 

Webarion

Осваивающий
Сообщения
143
Репутация
24
Секунду, третий глаз включу, попробую просмотреть вашу ситуацию...
 
Автор
S

SergVrn

Новичок
Сообщения
87
Репутация
2
В чем тут может быть неисправность ?
 

Webarion

Осваивающий
Сообщения
143
Репутация
24
В чем тут может быть неисправность ?
Если на обоих платформах, вы запускаете, равнозначно одинаковый скрипт. При этом используете одинаковые версии AutoIt, которые были одинаково установлены (т.е. нет такого, что на одном Portable, на другом Install и вы это однозначно знаете). То скрипт всегда будет выполняться одинаково. Это не проблема AutioIt. Это проблема платформы и в том числе настроек, а также доступа. Во всяком случае, никто вам точно не скажет, пока не посмотрит ваш скрипт. Чем точнее, вы хотите получить ответ, тем точнее данные вы должны указать в вопросе. Хотя-бы, массивы покажите, которые читаются в обоих случаях, если не доверяете. Ну, или пишите в личку, там придётся показывать код более полнее.Такие вопросы, решаются, только точным анализом, как минимум кода. У меня семёрка на двух платформах есть, могу потестить, просто самому интересно.
 
Автор
S

SergVrn

Новичок
Сообщения
87
Репутация
2
При этом используете одинаковые версии AutoIt, которые были одинаково установлены (т.е. нет такого, что на одном Portable, на другом Install и вы это однозначно знаете)
На обоих платформах автоит Install (а не portable)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Каков принцип построения массива? Размерность и количество строк как задается? Нужно видеть часть кода, где формируется массив. Из каких чисел формируется переменная $i, до передачи в функцию? Попробуй вывести массив на экран через _arraydisplay.
 

ORLANGUR-M3

Новичок
Сообщения
15
Репутация
0
Попробуйте пошагово посмотреть что содержится в переменных и как работает код.
ПС: Давно в автоите не работал, но вот что я вижу:

Функция удалить данные с парам. $i
Если в массиве в ячейке 11 строка, $i колонка что-то есть, то:
для каждого значения из этой ячейки массива закрываем процесс с ид $iP (там в двумерном массиве еще масив?)
Удаляем в массиве $aData всю строку ячеек с индексом $i. В индекс $i возвращается значение удаляемых ячеек.

Видать в очередной итерации идет попытка обращения к $aData[11][$i], но у массива такого индекса уже не существует.
 
Автор
S

SergVrn

Новичок
Сообщения
87
Репутация
2
Да title - по-разному выглядел на разных компьютерах. На одном - с расширением xls, на другом без этого расширения.
 
Верх