169 похожих чатов

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

признаки бага в автоите. Позавчера обнаружил и эти дни сокращал код до минимума, чтобы понять, как именно не работает. Сейчас только систематизировал. Итак, код:
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <GuiConstantsEx.au3>
#include <GUIConstants.au3>
#include <Misc.au3>

Global $vyrav, $Label,$ok_2, $otmena_2, $radio3, $radio4, $radio5, $vozvrat

$okno = WinGetTitle("[active]")

$stolb = inputBox("Ввод окружения array",">Введите необходимое количество столбцов","7")
If @error = 1 Then
Exit
Else

Endif

$strok = inputBox("Ввод окружения array",">Введите необходимое количество строк","3")
If @error = 1 Then
Exit
Else

Endif

send("\иупштХфккфнЪ{Enter 2}\утвХфккфнЪ{up 2}{End}Х")
Sleep(500)

$GUI_1 = GUICreate("Ввод окружения array", 300, 170)
;GUISetIcon(@ScriptDir & "\matrix.ico")
GUICtrlCreateLabel("Выберите желаемое горизонтальное" & @CRLF & "ыравнивание", 10, 5)
$radio1 = GUICtrlCreateRadio("l", 10, 40, 120, 20)
$radio2 = GUICtrlCreateRadio("c", 10, 70, 120, 20)
$radio3 = GUICtrlCreateRadio("r", 10, 100, 120, 20)
GUICtrlSetState($radio3,$GUI_CHECKED)

$ok_1 = GUICtrlCreateButton("OK", 10, 130, 88, 28, $BS_DEFPUSHBUTTON) ;
$otmena_1 = GUICtrlCreateButton("Cancel", 202, 130, 88, 28)

GUISetState()

Func Massiv_2($vyrav)
GUIDelete($GUI_1)
WinWaitClose("Ввод окружения array")
;Massiv_1()
$a = mod($stolb, 5)
$b =($stolb-$a)/5
If $a = 0 Then
For $c=1 To $b-1
send($vyrav & $vyrav & $vyrav & $vyrav & $vyrav & " ")
Next
send($vyrav & $vyrav & $vyrav & $vyrav & $vyrav)
Else
For $c=1 To $b
send($vyrav & $vyrav & $vyrav & $vyrav & $vyrav & " ")
Next
For $d=1 To $a
send($vyrav)
Next
Endif
send("Ъ{Down}")
Sleep(1000)

Global $GUI_2 = GUICreate("Ввод окружения array", 300, 170)
GUICtrlCreateLabel("По окончании работы программы курсор" & @CRLF & "в окне редактора перемещать туда," & @CRLF & "где он находится сейчас?", 10, 5)
$radio4 = GUICtrlCreateRadio("Да", 10, 40, 120, 20)
$radio5 = GUICtrlCreateRadio("Нет", 10, 70, 120, 20)
GUICtrlSetState($radio5,$GUI_CHECKED)

;$otmena_2 = GUICtrlCreateButton("Cancel", 202, 130, 88, 28)
$ok_2 = GUICtrlCreateButton("OK", 10, 130, 88, 28, $BS_DEFPUSHBUTTON)
$otmena_2 = GUICtrlCreateButton("Cancel", 202, 130, 88, 28)

GUISetState()

EndFunc


Func Massiv_3($vozvrat)
GUIDelete($GUI_2)
WinWaitClose("Ввод окружения array ")
MsgBox(4096, "Test", $vozvrat)
Exit
EndFunc


While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $ok_1
If BitAND(GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED Then Massiv_2("l")
If BitAND(GUICtrlRead($radio2), $GUI_CHECKED) = $GUI_CHECKED Then Massiv_2("c")
If BitAND(GUICtrlRead($radio3), $GUI_CHECKED) = $GUI_CHECKED Then Massiv_2("r")
Case $otmena_1
ExitLoop
Case $ok_2
If BitAND(GUICtrlRead($radio4), $GUI_CHECKED) = $GUI_CHECKED Then Massiv_3(1)
If BitAND(GUICtrlRead($radio5), $GUI_CHECKED) = $GUI_CHECKED Then Massiv_3(0)
Case $otmena_2
ExitLoop
EndSwitch
WEnd
Что удалось подметить? Вот сейчас кнопка $ok_2 работает в каждом из двух случаев: и при да, и при нет. Зато нажатие кнопки $otmena_2 не вызывает ничего. Более того, после ее нажатия перестает работать и кнопка $ok_2 и становится не возможным закрыть окно красной кнопкой - только через Диспетчер задач. Если же раскомментировать первую Отмену2 и закомментировать вторую, ситуация становится ровно обратной: нажатие кнопки $ok_2 вызывает ровно ту же реакцию, что и нажатие кнопки $otmena_2, зато сама кнопка $otmena_2 начинает работать отменно. И вот, как по-вашему, это баг автоита или что? Все указывает на баг.

3 ответов

37 просмотров

на момент входа в While 1 $msg = GUIGetMsg() $ok_2 и $otmena_2 не созданы а следовательно это 0 (на деле там пусто, но case прировнял к нулю) а $msg == 0 если ничего не происходит можно подпереть костылем, добавив в самый верх Case '' ContinueLoop

Ruslan aka DUDE
на момент входа в While 1 $msg = GUIGetMsg() $ok...

Так а разве этот вход не повторяется снова и снова? Там же цикл.

Ruslan aka DUDE
на момент входа в While 1 $msg = GUIGetMsg() $ok...

Не помогло. Сейчас добавил и ничего не изменилось: точно так же закрывал через Диспетчер. Да, оно и по симптомам было видно, что дело не в этом.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Всем привет. Возможно ли выполнить код ahk без интерпритатора? Имея только скомпилированный ехе файл? Например как функция eval
proxy
6
Карта сайта