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 ответов

19 просмотров

на момент входа в 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...

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

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Всем привет! Кто нибудь парсил в ручную JSON без библиотек и фреймворков? Есть может ссылки на оптимальный алгоритмы работы с текстом и примеры таких парсеров?
Lem
27
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
Есть сайт. Там была древняя версия эво. Стоял плагин, который каждый коммент в Jot делал отдельной страницей. После обновления все слетело, теперь старница открывается отдельн...
Artem
1
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Приветствую всех. Хочу начать изучать код для программирования микроконтроллеров и не пойму с чего начать. То ли с Си, то ли с плюсов. Чем языки вообще различаются. С чего мож...
Андрей
7
Карта сайта