Что нового

Видимое содержимое невидимого окна

Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
Это писалось в предположении, что
в двоичном представлении значения $GUI_CHECKED только одна единица,
Интересующую же меня ситуацию
Если бы в двоичном представлении значения $GUI_CHECKED было больше одой единице, то мог бы представиться случай, когда значение BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) , будучи отличным от 0, было бы отличным и от $GUI_CHECKED?
это никак не проясняет.
На форумах обычно помогают, а не обучают.
А разве из моих текстов не видно, что мне нужна именно помощь в осознании прочитанного, а не обучение? Разве не видно, что я знаю определения битовых операций, могу выполнять их
?
В сети много материала о битовых операциях.
Конечно, много. примеры вычисления bitand
  1. Результат поиска №1
  2. Результат поиска №2
  3. Результат поиска №3
........................................................................................................................................
Но вот беда: там нет ответа на то, о чем я спрашиваю.
 

Prog

Продвинутый
Сообщения
640
Репутация
80
Если бы в двоичном представлении значения $GUI_CHECKED было больше одой единице, то мог бы представиться случай, когда значение BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) , будучи отличным от 0, было бы отличным и от $GUI_CHECKED? Правильно?
Это легко проверить (немного модифицированный код из сообщения 40).
Код:
#include <GUIConstantsEx.au3>
Const $GUI_TEST_FLAG = BitOR($GUI_CHECKED, $GUI_SHOW)

$x = BitOR($GUI_CHECKED, $GUI_SHOW, $GUI_ENABLE, $GUI_FOCUS)
MsgBox(0, "GUI_TEST_FLAG="&$GUI_TEST_FLAG, $x)
if BitAND($x, BitOR($GUI_CHECKED, $GUI_SHOW)) = $GUI_TEST_FLAG Then
    MsgBox(0, "", "$GUI_TEST_FLAG")
endif
Уберите из 4 строки $GUI_CHECKED или $GUI_SHOW и посмотрите что получится.
То есть все биты из $GUI_TEST_FLAG должны быть в переменной $x, а наличие или отсутствие других бит не имеет значения ведь функция BitAND их обнулит согласно установленным битам в $GUI_TEST_FLAG.
 
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
Это легко проверить (немного модифицированный код из сообщения 40).
Код:
#include <GUIConstantsEx.au3>
Const $GUI_TEST_FLAG = BitOR($GUI_CHECKED, $GUI_SHOW)

$x = BitOR($GUI_CHECKED, $GUI_SHOW, $GUI_ENABLE, $GUI_FOCUS)
MsgBox(0, "GUI_TEST_FLAG="&$GUI_TEST_FLAG, $x)
if BitAND($x, BitOR($GUI_CHECKED, $GUI_SHOW)) = $GUI_TEST_FLAG Then
    MsgBox(0, "", "$GUI_TEST_FLAG")
endif
Уберите из 4 строки $GUI_CHECKED или $GUI_SHOW и посмотрите что получится.
То есть все биты из $GUI_TEST_FLAG должны быть в переменной $x, а наличие или отсутствие других бит не имеет значения ведь функция BitAND их обнулит согласно установленным битам в $GUI_TEST_FLAG.
Ваш пример, безусловно, иллюстрирует то, для иллюстрации был придуман, только мне это почему-то не сильно бросается в глаза. Скорее всего, это потому что в месседжбоксе отображаются десятичные представления результатов битовых операций, а не двоичные или просто не в коня корм. Поэтому я решил пойти другим путем. Я решил посмотреть, как конкретно выполняется равенство

BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) = $GUI_CHECKED

для пункта контекстного меню, для которого
А вот для пункта контекстного меню численные значения этих констант состояний имеют почему-то другие значения: когда этот пункт не отмечен галочкой, это состояние имеет значение 68, а когда отмечен, то - 65
и при условии действующего в автоите значения константы $GUI_CHECKED Далее числовые значения состояния, значения константы, результаты битовых операций я буду записывать в двоичной системе. Итак, в этой системе тоже
$GUI_CHECKED = ...0 000 001.
Для наглядности я буду писать значения констант, операций в таком простом виде.
Пусть этот пункт не отмечен галочкой. Тогда
Read($infoitem) = ...1 000 100
И тогда будет
BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) = ...0 000 000 = 0
и имеет место вот это:

Он может быть равен 0
Пусть теперь этот пункт отмечен галочкой. Тогда
Read($infoitem) = ...1 000 001
и, значит,
BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) = ...0 000 001 = 1
и имеет место вот этот случай:
или значению $GUI_CHECKED которое в данном случае не равно 0.


т.е, при том значении константы $GUI_CHECKED, при той структуре значения этой константы,, которые действует в автоите, при

в двоичном представлении значения $GUI_CHECKED только одна единица
эта схема:
То есть нужно проверить равен результат нулю или нет. Он может быть равен 0 или значению $GUI_CHECKED которое в данном случае не равно 0.
работает.

Теперь давайте посмотрим, работала ли бы схема:
То есть нужно проверить равен результат нулю или нет. Он может быть равен 0 или значению $GUI_CHECKED которое в данном случае не равно 0.
, если бы структура значения константы $GUI_CHECKED в автоите была бы другой, не такой:
в двоичном представлении значения $GUI_CHECKED только одна единица
Допустим, было бы
$GUI_CHECKED = 11 ...0 000 011
тогда в том случае, когда пункт контекстного меню был отмечен галочкой, было бы по-прежнему
Read($infoitem) = ...1 000 001
, а потому
BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) = ...0 000 001 = 1
Т. е BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) уже, будучи отличной от 0, не равнялось бы и $GUI_CHECKED. Т. е. получило ьы конкретное воплощение сделанное мной предположение о возможности существования такого случая
Если бы в двоичном представлении значения $GUI_CHECKED было больше одой единице, то мог бы представиться случай, когда значение BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) , будучи отличным от 0, было бы отличным и от $GUI_CHECKED?
, а схема

результат будет нулевой или равен $GUI_CHECKED.
при данном допущении о значении константы $GUI_CHECKED ломалось бы. Правильно?
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
640
Репутация
80
Ваш пример, безусловно, иллюстрирует то, для иллюстрации был придуман, только мне это почему-то не сильно бросается в глаза.
В AutoIt я не нашел встроенных средств работы с числами в двоичном представлении.
Поэтому покажу на примере другого языка. Надеюсь будет понятно.
Код:
Procedure.s BinByte(num.a)
  ProcedureReturn RSet(Bin(num, #PB_Byte), 8, "0")
EndProcedure

x.a = %01001111
y.a = %01100010

Debug "x = "+ #TAB$  + BinByte(x)
Debug "y = "+ #TAB$  + BinByte(y)
Debug "AND "+ #TAB$  + BinByte(x & y)
Debug "OR " + #TAB$  + BinByte(x | y)
Debug "XOR "+ #TAB$  + BinByte(x ! y)
Debug "----"
Debug "x = "+ #TAB$  + BinByte(x)
x<<2 ; Сдвиг влево на 2 позиции.
Debug "L shift"+ #TAB$  + BinByte(x)
Debug "R shift"+ #TAB$  + BinByte(x>>4) ; Сдвиг вправо на 4 позиции.
Результат выполнения
Код:
x =     01001111
y =     01100010
AND     01000010
OR      01101111
XOR     00101101
----
x =     01001111
L shift 00111100
R shift 00000011
Bitwise.png
Посмотрите как различные битовые операции изменяют биты.
Если не понятно, прочитайте еще раз описание операций в википедии.
Я решил посмотреть, как конкретно выполняется равенство
Оператор If выполняет сравнение в соответствии с выражением. В данном случае проверяется чтобы результат BitAND и $GUI_CHECKED был бы идентичен.
Вам нужно экспериментировать и смотреть что получится. Такое впечатление что для вас сейчас логические операции это "магия".
 
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
Оператор If выполняет сравнение в соответствии с выражением.
Я сосредоточил внимание на том, что происходит перед (в смысле порядка выполнения) оператором If.
В данном случае проверяется чтобы результат BitAND и $GUI_CHECKED был бы идентичен.
А разве из вот этого:
имеет место вот этот случай:
, из вот этого:
Т. е BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) уже, будучи отличной от 0, не равнялось бы и $GUI_CHECKED
и отчасти из этого:
Пусть этот пункт не отмечен галочкой. Тогда
Read($infoitem) = ...1 000 100
И тогда будет
BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) = ...0 000 000 = 0
и имеет место вот это:
не видно, что в центре моего рассмотрение как раз и было фиксирование совпадения или не совпадения BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) с $GUI_CHECKED?
Сообщение автоматически объединено:

Код:
Procedure.s BinByte(num.a)
ProcedureReturn RSet(Bin(num, #PB_Byte), 8, "0")
EndProcedure

x.a = %01001111
y.a = %01100010

Debug "x = "+ #TAB$ + BinByte(x)
Debug "y = "+ #TAB$ + BinByte(y)
Debug "AND "+ #TAB$ + BinByte(x & y)
Debug "OR " + #TAB$ + BinByte(x | y)
Debug "XOR "+ #TAB$ + BinByte(x ! y)
Debug "----"
Debug "x = "+ #TAB$ + BinByte(x)
x<<2 ; Сдвиг влево на 2 позиции.
Debug "L shift"+ #TAB$ + BinByte(x)
Debug "R shift"+ #TAB$ + BinByte(x>>4) ; Сдвиг вправо на 4 позиции.
Результат выполнения
Код:
x = 01001111
y = 01100010
AND 01000010
OR 01101111
XOR 00101101
----
x = 01001111
L shift 00111100
R shift 00000011
Bitwise.png
За лишнюю демонстрацию выполнения битовых операций, конечно, спасибо, хотя их выполнение вручную у меня и не вызывает каких-либо проблем. Но моя проблема совсем не в этом:
Посмотрите как различные битовые операции изменяют биты.
Моя проблема в том, что я хочу посоветоваться, правильно ли я понимаю, что было бы так-то и так-то, если бы было твк- то и так, но по-другому, чем сейчас. Только почему-то никто этого не может понять.

Но в любом случае спасибо за участие.
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
640
Репутация
80
Но моя проблема совсем не в этом:
Покажите код с проблемой. Тогда будет проще понять о чем речь.
Моя проблема в том, что я хочу посоветоваться, правильно ли я понимаю, что было бы так-то и так-то, если бы было твк- то и так,
Проблема в том что вас сложно понять.
Поэкспериментируйте с кодом и проверьте правы вы или нет.
 
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
Покажите код с проблемой.
У меня проблема не в коде. У меня проблема вот в чем:
а $GUI_CHECKED значение BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) (если BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) не равно 0) может равняться потому что в двоичном представлении значения $GUI_CHECKED только одна единица, правильно? Если бы в двоичном представлении значения $GUI_CHECKED было больше одой единице, то мог бы представиться случай, когда значение BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) , будучи отличным от 0, было бы отличным и от $GUI_CHECKED? Правильно?
не могли бы вы просто, пока по возможности без предложения запуска какого-либо скрипта, хотя бы потому, что
В AutoIt я не нашел встроенных средств работы с числами в двоичном представлении.
если это, конечно, не пойдет во вред пониманию, ответить, верно ли это мое предположение или нет. Просто, верно или не верно, не отвлекаясь в ту или иную сторону от этой на текущий момент темы обсуждения.
Поэкспериментируйте с кодом и проверьте правы вы или нет.
Со значением константы, прибитой в данном языке программирования к своему значению гвоздями, по-моему, особо не поэкспериментируешь. Но это чистое ИМХО. Это просто мое ощущение на текущий момент.

Спасибо за терпение в разбирательстве моих непоняток!
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
640
Репутация
80
BitAND производит побитовое И со всеми переданными ей параметрами и если бы в $GUI_CHECKED было бы больше одного установленного бита, возможна ситуация что в результате были бы установлены не все биты что есть в $GUI_CHECKED. По моему очевидно и легко проверяется.

Со значением константы, прибитой в данном языке программирования к своему значению гвоздями, по-моему, особо не поэкспериментируешь.
Что мешает использовать переменную или константу с другим именем, присвоив есть требуемое значение?
 
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
BitAND производит побитовое И со всеми переданными ей параметрами и если бы в $GUI_CHECKED было бы больше одного установленного бита, возможна ситуация что в результате были бы установлены не все биты что есть в $GUI_CHECKED. По моему очевидно и легко проверяется.
Буду считать, что был дан ответ
Отлично. С одним, вроде, разобрались. Теперь. Не могли бы вы привести такой же простой и прозрачный пример использования операции BitOR? Пример, который был бы не про битовые операции, а пример, который бы показывал, как эта операция делает что-нибудь конкретное в автоите?
Что мешает использовать переменную или константу с другим именем, присвоив есть требуемое значение?
Ну не знаю. Наверное, особое отношение, к константе, заданной создателями языка. Как бы ощущение принадлежности этой константы к касте неприкасаемых. Как бы неуверенности в верности того, что получено, подсмотрено самим в программировании. Да, понятно, это от неуверенности в собственных силах в программировании.
 

Prog

Продвинутый
Сообщения
640
Репутация
80
Не могли бы вы привести такой же простой и прозрачный пример использования операции BitOR?
Эта функция используется очень часто в AutoIt.
Примеров много https://autoit-script.ru/docs/functions/guicreate.htm
Код:
$pic = GUICreate("", 169, 68, 20, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGui)
Эта функция устанавливает биты, в отличие от BitAND которая сбрасывает биты.
 
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
Установленный бит равен 1, сброшенный бит равен 0.
Получается, что
Эта функция устанавливает биты,
BitOR делает некоторые (возможно, не все) биты равными 1, а
BitAND которая сбрасывает биты.
BitAND делает некоторые (тоже, возможно, не все) биты равными 0. Понятно.
Сообщение автоматически объединено:

Вот здесь:
Расширенные стили имеющие префикс $WS_EX_ должны определятся в параметре exStyle, а стили без этого префикса помещаются в параметр style.
имеется же ввиду на самом деле не "стили без этого префикса", а "стили без _EX в префиксе"?
Сообщение автоматически объединено:

Я сделал такое наблюдение. Записал значения всех констант $WS_EX_... отсюда в двоичном представлении так, чтобы одинаковые разряды этих записей находились в одних столбцах. с целью посмотреть, возможно ли во множестве этих принятых констант по данному значению BitOR однозначно определить те операнды операции BitOR, из которых это значение этой операцией получено. Оказалось, что в этих представлениях нет констант, в одних и тех же разрядах которых стоят единицы, кроме константы $WS_EX_OVERLAPPEDWINDOW, совпадающей единицей с $WS_EX_CLIENTEDGE в 9-ом разряде (нумерацию разрядов начинаю с нулевого) и с $WS_EX_WINDOWEDGE в 8-ом. Ну так и по определению $WS_EX_OVERLAPPEDWINDOW, $WS_EX_OVERLAPPEDWINDOW = $WS_EX_CLIENTEDGE + $WS_EX_WINDOWEDGE. Это значит, что , действительно, по данному значению BitOR можно однозначно определить те операнды операции BitOR, из которых это значение этой операцией получено.
Сообщение автоматически объединено:

Поэкспериментируйте с кодом и проверьте правы вы или нет.
Что мешает использовать переменную или константу с другим именем, присвоив есть требуемое значение?
Пришло к голову следующее:
А вот для пункта контекстного меню численные значения этих констант состояний имеют почему-то другие значения: когда этот пункт не отмечен галочкой, это состояние имеет значение 68, а когда отмечен, то - 65,
Двоичное представление числа 68:
...1 000 100.
Двоичное представление числа 65:
...1 000 001.
Двоичные представления численных значений констант состояний пункта контекстного меню различаются не только в нулевом, но и во втором разряде. И на этом можно сыграть. Именно, если положить $Gui_checked_moj = 4, то код
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

HotKeySet("е", "test")  

    ; правый клик на gui выводит контекстное меню.
    ; правый клик на кнопке "ok" выводит контекстное меню кнопки.

    $Gui_checked_moj = 4
    GUICreate("Моё контекстное меню в GUI", 300, 200)

    $contextmenu = GUICtrlCreateContextMenu()

    $button = GUICtrlCreateButton("OK", 100, 100, 70, 20)
    $buttoncontext = GUICtrlCreateContextMenu($button)
    $buttonitem = GUICtrlCreateMenuItem("О кнопке", $buttoncontext)

    $newsubmenu = GUICtrlCreateMenu("Новое", $contextmenu)
    $textitem = GUICtrlCreateMenuItem("Текст", $newsubmenu)

    $fileitem = GUICtrlCreateMenuItem("Открыть", $contextmenu)
    $saveitem = GUICtrlCreateMenuItem("Сохранить", $contextmenu)
    GUICtrlCreateMenuItem("", $contextmenu) ; разделитель

    $infoitem = GUICtrlCreateMenuItem("Информация", $contextmenu)

    GUISetState()

    ; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
    While 1
        $msg = GUIGetMsg()

        if $msg = $infoitem Then
             If BitAND(GUICtrlRead($infoitem), $GUI_CHECKED) = $GUI_CHECKED Then ; Если галочка в наличии, тогда
                GUICtrlSetState($infoitem, $GUI_UNCHECKED) ; Убирает галочку
            Else ; Иначе
                GUICtrlSetState($infoitem, $GUI_CHECKED) ; Ставит галочку
             EndIf
        endif

        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    GUIDelete()
    
    Func test()
    If BitAND(GUICtrlRead($infoitem), $Gui_checked_moj) = $Gui_checked_moj Then
    MsgBox(4096,"","Пункт контекстного меню $infoitem не отмечен галочкой")
    ElseIf BitAND(GUICtrlRead($infoitem), $Gui_checked_moj) = 0 Then
    MsgBox(4096,"","Пункт контекстного меню $infoitem отмечен галочкой")
    
    EndIf
EndFunc

будет работать так, как и было задумано.
Спасибо за помощь!
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
если положить $Gui_checked_moj = 4
В GUIConstantsEx.au3 уже определена константа со значением 4
Код:
Global Const $GUI_UNCHECKED = 4

Соответственно, её можно использовать в вашей функции
Код:
Func test()
  If BitAND(GUICtrlRead($infoitem), $GUI_UNCHECKED) = $GUI_UNCHECKED Then
    MsgBox(4096,"","Пункт контекстного меню $infoitem не отмечен галочкой")
  ElseIf BitAND(GUICtrlRead($infoitem), $GUI_UNCHECKED) = 0 Then
    MsgBox(4096,"","Пункт контекстного меню $infoitem отмечен галочкой")
  EndIf
EndFunc

Или так
Код:
Func test()
  Local $State = GUICtrlRead($infoitem)
  If BitAND($State, $GUI_UNCHECKED) Then MsgBox(4096,"","Пункт контекстного меню $infoitem НЕ отмечен галочкой")
  If BitAND($State, $GUI_CHECKED) Then MsgBox(4096,"","Пункт контекстного меню $infoitem отмечен галочкой")
  If BitAND($State, $GUI_DISABLE) Then MsgBox(4096,"","Пункт контекстного меню $infoitem заблокирован")
  If BitAND($State, $GUI_ENABLE) Then MsgBox(4096,"","Пункт контекстного меню $infoitem доступен")
EndFunc
 
Последнее редактирование:
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
В GUIConstantsEx.au3 уже определена константа со значением 4
Задача-то была
использовать переменную или константу с другим именем, присвоив есть требуемое значение
, попробовать самому задать константу для использования в этих целях.
Код:
ElseIf BitAND(GUICtrlRead($infoitem), $GUI_UNCHECKED) = 0
Я специально вот здесь:
написал не иначе если BitAND равно тому-то, а просто иначе для, так сказать, увеличения остроты кода, чтобы руками прощупать.
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
самому задать константу для использования в этих целях
Стили и состояния окон или контролов - это набор заранее определённых значений. Все эти значения описаны в виде констант в соответствующих UDF. Для объединения значений используют BitOR, для исключения значений - BitXOR, для получения значений - BitAND. В подавляющем большинстве случаев эти функции в AutoIt используются именно в контексте работы со стилями и состояниями.
Код:
#include <WindowsConstants.au3>
#include <WinAPISysWin.au3>

; Используем BitOR для определения стиля
$GUI = GUICreate("Window", 300, 300, -1, -1, BitOR($WS_DLGFRAME, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX))
GUISetState()
Sleep(555)

; Получаем текущий стиль
$Style = _WinAPI_GetWindowLong($GUI, $GWL_STYLE)
MsgBox(0, "Style", "Текущий стиль: " & Hex($Style, 8))
; Получаем информацию по конкретному стилю при помощи BitAND
If BitAND($Style, $WS_MINIMIZEBOX) Then MsgBox(0, "Style", "Кнопка 'Свернуть' доступна")
If BitAND($Style, $WS_MAXIMIZEBOX) Then MsgBox(0, "Style", "Кнопка 'Развернуть' доступна")
If Not BitAND($Style, $WS_HSCROLL) Then MsgBox(0, "Style", "Полоса прокрутки отсутствует")
; Исключаем стиль $WS_MINIMIZEBOX при помощи BitXOR
$Style = BitXOR($Style, $WS_MINIMIZEBOX)
; Применяем стиль
_WinAPI_SetWindowLong($GUI, $GWL_STYLE, $Style)
If Not BitAND($Style, $WS_MINIMIZEBOX) Then MsgBox(0, "Style", "Кнопка 'Свернуть' заблокирована")

; Получаем состояние окна
$State = WinGetState($GUI)
MsgBox(0, "State", "Текущее состояние: " & Hex($State, 8))
; Получаем информацию по конкретному состоянию при помощи BitAND
If BitAND($State, $WIN_STATE_VISIBLE) Then MsgBox(0, "State", "Окно отображается")
If Not BitAND($State, $WIN_STATE_MAXIMIZED) Then MsgBox(0, "State", "Окно не развёрнуто")

Do
Until GUIGetMsg() = -3
Соответственно, использовать собственные переменные/константы для стилей и состояний нет смысла. Потому что AutoIt или Windows их просто "не поймут", если они заранее не известны.
 
Автор
M

mathem

Новичок
Сообщения
68
Репутация
0
Стили и состояния окон или контролов - это набор заранее определённых значений. Все эти значения описаны в виде констант в соответствующих UDF. Для объединения значений используют BitOR, для исключения значений - BitXOR, для получения значений - BitAND. В подавляющем большинстве случаев эти функции в AutoIt используются именно в контексте работы со стилями и состояниями.
Да я понимаю, понимаю. Просто экспериментировать-то с чем-то нужно.
Потому что AutoIt или Windows их просто "не поймут", если они заранее не известны.
А вот это, я считаю, не всегда так. И может зависеть от того, что определяешь: у меня же получилось.
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
Вы своей переменной присвоили значение 4, которое AutoIt и использовал. Название (именование) - это для людей. Для AutoIt главное - значение. Вам @Prog уже объяснял про "магические числа". AutoIt, как и другие ЯП, использует значения констант/переменных. А чтобы эти значения было легче запоминать и использовать, люди придумали для них "текстовое описание" - имя.
 
Последнее редактирование:
Верх