Показать полную графическую версию : [решено] скомпилированный (exe-file) скрипт при запуске вываливается с ошибкой у части юзеров
saavaage
04-10-2010, 22:13
Проблема:
у ряда пользователй скомпилированный скрипт вываливается с ошибкой (например, line 21332 Error: array variable has incorrent number of subscripts or subscript dimension range exceeded)
Вопрос: каким образом, можно узнать к какой чтроке скрипта это имеет отношение? Как вообще расшифровывать подобные послания?
madmasles
05-10-2010, 00:33
saavaage,
1. У меня Ваш скрипт тоже вываливается с ошибкой. Ругается на 568 строку. У Вас объявлен массив Dim $aAuto[20][2], а у меня в результате получается 24 записи, потому и ругается. Поменял на Dim $aAuto[100][2] - работает нормально.
2. При выборе размещения файла подкачки Вы в комбобоксах указываете 'C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z'. У вас же есть массив дисков ($DrivesArr = DriveGetDrive("Fixed", 910 строка). Наверное, лучше данные из этого массива в комбобоксы поместить.
saavaage
05-10-2010, 00:50
madmasles,
1. У меня Ваш скрипт тоже вываливается с ошибкой. Ругается на 568 строку. У Вас объявлен массив Dim $aAuto[20][2], а у меня в результате получается 24 записи, потому и ругается. Поменял на Dim $aAuto[100][2] - работает нормально. »
только сейчас с помощью Yashied вышел на след этого массива...
Никогда бы не подумал, что у народа столько может прог в автозагрузке висеть. Думал 20 хватит за глаза...
Спасибо.
2. При выборе размещения файла подкачки Вы в комбобоксах указываете 'C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z'. У вас же есть массив дисков ($DrivesArr = DriveGetDrive("Fixed", 910 строка). Наверное, лучше данные из этого массива в комбобоксы поместить. »
Здравое замечание. Не подумал. Спасибо за подсказку
madmasles, по ошибке с вываливанием уже даже предложили решение:
Dim $aAuto[20][2]
...
$row = 0
For $p = 0 To 6
$key = 1
While 1
$sVal = RegEnumVal($aPath[$p], $key)
If @error Then ExitLoop
If $row > UBound($aAuto) - 1 Then ReDim $aAuto[$row + 100][2]
$aAuto[$row][0] = $sVal
$aAuto[$row][1] = RegRead($aPath[$p], $sVal)
$row += 1
$key += 1
WEnd
Next
If $row Then
ReDim $aAuto[$row][2]
EndIf
Даю, на всякий, ссылку на русский форум (там, заодно, подсказка как искать строку с ошибкой)
http://autoit-script.ru/index.php/topic,2798.msg20244.html#new
madmasles, вопрос по поводу2. При выборе размещения файла подкачки Вы в комбобоксах указываете 'C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z'. У вас же есть массив дисков ($DrivesArr = DriveGetDrive("Fixed", 910 строка). Наверное, лучше данные из этого массива в комбобоксы поместить. »
Это не будет более ресурсоемкое решение, чем мое?
madmasles
05-10-2010, 09:07
Это не будет более ресурсоемкое решение, чем мое? »Почему? У Вас же этот массив $DrivesArr = DriveGetDrive("Fixed") все равно используется.
saavaage
05-10-2010, 12:54
madmasles, уже сделал, как сказали. Все зеер гут. Спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.