Что нового

[Баг] GUISetAccelerators - Крах скрипта при неправильном использований

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Простой пример:

Код:
$nDummy = 0
Dim $aAccelKeys[2][1] = [["^a"], [$nDummy]]
GUISetAccelerators($aAccelKeys)


Скрипт вываливается с сообщением:
Инструкция по адресу "0x0040c6c0" обратилась к памяти по адресу "0x00000008". Память не может быть "read".

"ОК" -- завершение приложения
Требуется подтверждение.

Испольование конечно неправильное, но в любом случае скрипт не должен так завершаться.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
CreatoR [?]
Скрипт вываливается
То есть получается, что на всякий случай надо проверять $nDummy сначала?
Код:
$nDummy = 0
Dim $aAccelKeys[2][1] = [["^a"],[$nDummy]]
If $nDummy Then
	GUISetAccelerators($aAccelKeys)
EndIf
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
madmasles [?]
То есть получается, что на всякий случай надо проверять $nDummy сначала?
Dummy тут ни при чём, дело в неверном построений массива:
Код:
$aAccelKeys[2][1] = [["^a"],[$nDummy]]

Тут на каждую строчку по одному столбику, а нужно два столбика (пара: г.клавиша + ID элемента):
Код:
$aAccelKeys[2][1] = [["^a", $nDummy]]

Т.е получается что в «GUISetAccelerators» передаётся ID элемента вместо г.клавиши, отсюда видимо и переполнение памяти (несоответствие типов данных?).
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Хотя нет, видимо дело в размерности массива:

Код:
Dim $aAccelKeys[2][1]
;~ Dim $aAccelKeys[2][2] ;С этим не крашится
GUISetAccelerators($aAccelKeys)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
CreatoR сказал(а):
Код:
$aAccelKeys[2][1] = [["^a"],[$nDummy]]
Неправильно создан массив. Нужно так:

Код:
$nDummy  = 0
Dim $aAccelKeys[1][2] = [["^a", $nDummy]]
GUISetAccelerators($aAccelKeys)
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Верх