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

40 просмотров

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта