![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Разница между операторами равенств ( =, ==, <> ) |
|
[решено] Разница между операторами равенств ( =, ==, <> )
|
Пользователь Сообщения: 52 |
Столкнулся со следующей проблемой:
while 1 $messagesListElementState = GUICtrlRead ($messagesList, 1);Какой элемент сейчас выбран $messagesListElementStateTextTemp = $messagesListElementStateText $messagesListElementStateText = GUICtrlRead ($messagesListElementState$messagesListElementState, 1);Текст выбранного эл-та if Not ($messagesListElementStateText == $messagesListElementStateTextTemp) Then showMessage ($messagesList, $messageEditLabel) EndIf wend Изначально у меня условие вместо выглядело так: При этом, условие не отрабатывалось (меняется активный эл-т, меняется текст, а сравнение через <> выдает false - т.е., как я понимаю, элементы якобы равны) Резюмирую: в случае, когда messagesListElementStateTextTemp = 0, а messagesListElementStateText = 'Привет' сравнение через not ( == ) дало True, а через <> - False. Как так? |
|
Отправлено: 18:22, 23-05-2011 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Зачем так усложнять?
Чтобы ответить на поставленный вопрос, желательно увидеть полный пример. Хотя думаю дело в сравнений разных типов данных. |
------- Отправлено: 19:46, 23-05-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 265
|
Профиль | Отправить PM | Цитировать Freez,
<> не учитывает регистр букв, как и = == - учитывает регистр букв |
Отправлено: 19:54, 23-05-2011 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Freez:
«==» это не тоже самое что и «=», второе применение сравнивает типы данных как строки, а первое по отдельности, пример: $vVar1 = 0 $vVar2 = '' ConsoleWrite(($vVar1 = $vVar2) & @LF) ;True - так как при использований "=", переменная $vVar1 принимается как пустая строка, чему и равняется $vVar2 ConsoleWrite(($vVar1 == $vVar2) & @LF) ;False - так как при использований "==", переменная $vVar1 принимается как 0 (целое число), чему НЕ равняется $vVar2 Цитата AZJIO:
|
||
------- Отправлено: 19:55, 23-05-2011 | #4 |
Старожил Сообщения: 265
|
Профиль | Отправить PM | Цитировать Creat0R, просто сравниваеть результаты инвертирования выражения, которые имеют разные свойства уже не логично, это я и показал.
Freez, посмотри примеры логических выражений. |
|
Отправлено: 20:17, 23-05-2011 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата AZJIO:
И ты показал про регистр букв, тут нет связи с регистром, здесь вопрос именно в сравнений типов данных. Это обсуждалось немало на оф. форуме. |
|
------- Отправлено: 22:38, 23-05-2011 | #6 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Creat0R, с типами данных - это понятно. Вопрос в следующем:
по логике вещей, эти условия должны быть равнозначны (это подтверждается нижеследующим условием (true)): На практике же, первое выражение дает False (логично), а второе - True (каким образом??) Сначала я было подумал, что через " = " любая строка равна любому числу, однако (false): Таким образом получается, что " = " истина для любой строки и нуля? ( ('anyString' = 0) - true ) Какой в этом смысл? |
Отправлено: 12:36, 24-05-2011 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Freez:
Цитата Freez:
В данном случае (второй пример сверху) оба типа данных преобразовываются в целое число, почему - потому что так устроен AutoIt, он работает только с одним типом данных - Variant. В первом же примере, оба типа являются строковыми, поэтому и нет совпадения. Цитата Freez:
|
|||
------- Отправлено: 13:16, 24-05-2011 | #8 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Creat0R, ага, спасибо, теперь совсем понятно ))
|
Отправлено: 13:19, 24-05-2011 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разница между материнскими платами? | micro8 | Хочу все знать | 4 | 14-02-2011 17:49 | |
HDD - разница между форматированием | vladimirn | Накопители (SSD, HDD, USB Flash) | 1 | 06-04-2009 17:43 | |
Какая разница между С++ и Dev C++ | Skrip | Программирование и базы данных | 3 | 20-07-2005 17:42 | |
Разница между форматами VCD | Zuka | Хочу все знать | 1 | 20-04-2005 11:03 | |
Разница между 'To' и 'Cc' | ankerok | Хочу все знать | 9 | 29-04-2003 10:11 |
|