|
|
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Вот истинный код: if ((IPCPort=False) or (IPAdr=False) or (Pusk=False)) then begin Preryvanie:=True; ToolButton5Click(Nil); StatusBar1.Panels[0].Text:='Прервана связь или отключен контроллер!'; end else if ({(Preryvanie=True) and} (IPCPort=True) and (IPAdr=True)) then begin if (Preryvanie=True) then begin ToolButton3Click(Nil); Preryvanie:=False; end else if (Timer1.Enabled=False) then Timer1.Enabled:=True; end; Мне пришлось закомментировать условие с Preryvanie и прописать его ниже, тогда всё пошло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 11:52 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Я понимаю, то что у меня произошло - смахивает на нонсенс. И такого странного результата в своих программах я не получал никогда. Всё, что разумно, работало всегда. А тут странность выскочила. Прошу прощения за то, что оторвал вас от дел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 11:57 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
удалено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 11:58 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
В чём странность ? В том что вы не понимаете как работает ваш код ? Да, это действительно странно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 12:18 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Добавьте в начало и наблюдайте, какие значение имеют ваши флаги Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 12:32 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Ничё вы демагогию развели тут Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. З.ы я никогда не делаю прямых проверок на = false и = true я использую только not в случае проверки на false. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 15:36 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, тем не менее, в ваш код вкралась ошибка. Сами найдете, или помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 16:32 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Sergi if (((a=true) and (b=true)) and (c=true)) Сравнению глобальной булевой переменной с True соответствует следующий код: Код: pascal 1. 2. 3. Байт в памяти, занимаемый переменной, сравнивается с $01, инструкция условного перехода jnz. А что, если там ненулевое (мусорное) значение, не равное $01? Условие не выполнится. А вот какой код соответствует проверке (не сравнения) булевой переменной на True: Код: pascal 1. 2. 3. В данном случае сравнение идет с $00, инструкция условного перехода jz. Если в переменной ненулевое значение, не равное $01, то условие выполнится. Если условие if (((a=true) and (b=true)) and (c=true)) заменить на if (((a) and (b)) and (c)) что-нибудь изменится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 16:35 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Всех с пятничными тремя условиями соснами! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 16:45 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov, А продвинутые языки давно на (isTrue) и (isTrue == true) используют единственную инструкцию test с je И всё что (!isTrue) и (isTrue == false) используется test и jne А cmp не трогается даже в случае (num == 0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 17:21 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный А продвинутые языки давно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 18:36 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov, Это я про gcc и clang, в прочем delphi никогда не добиться и 10% от того, что могут те компиляторы. Я уже не говорю про оптимизацию кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2020, 18:43 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov Сравнению глобальной булевой переменной с True соответствует следующий код: Код: pascal 1. 2. 3. Байт в памяти, занимаемый переменной, сравнивается с $01, инструкция условного перехода jnz. А что, если там ненулевое (мусорное) значение, не равное $01? Условие не выполнится. А сишников с первого класса учат, что сравнивать с true нельзя, и даже объясняют, почему. :) ... Пожалуй, что булевский тип - зло. Никакой пользы от него, кроме вреда. И тем, кто сравнивает с true/false, и тем, кто на это смотрит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 00:15 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Да, всё дело оказалось в булевских переменных. Заменил и всё пошло. Очень хорошо пояснили суть проблемы. Не будем впредь надеяться на описание переменных булевского типа. Спасибо всем за объяснение проблемы. Вопрос решён. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 09:21 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
При чём сбой шёл только в случае условия - true и никогда с условием - false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 09:37 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Sergi Заменил и всё пошло Можно узнать, что именно ты сделал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 09:42 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ъъъъъ Sergi Заменил и всё пошло Можно узнать, что именно ты сделал? Работает и когда убрал сравнения с true и false в условиях, ну и естественно, когда ушел от булевских переменных к integer, проверяю на = (0 или 1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 10:34 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
продолжение следует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 10:38 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Sergi ъъъъъ пропущено... Можно узнать, что именно ты сделал? Работает и когда убрал сравнения с true и false в условиях, ну и естественно, когда ушел от булевских переменных к integer, проверяю на = (0 или 1). То есть, теперь ждем сравнения неинициализированного целого с единицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 11:33 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Sergi, а почему не сравнивать с равно/не равно 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 12:44 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
почему бы не начать искать ошибку у себя, а не у компилятора )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 13:24 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov продолжение следует Погоди, ТС еще до extended не добрался - вот тогда уже начнется.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 13:41 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov почему бы не начать искать ошибку у себя, а не у компилятора )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 13:50 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Сошлите его в деморган, учить ООП. Если используются классы, глобальные переменные нельзя использовать. И ошибок не будет таких. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 16:42 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Сошлите его в деморган, учить ООП. Если используются классы, глобальные переменные нельзя использовать. И ошибок не будет таких. Классы + глобали под запретом уже? Это с какого перепугу-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 19:04 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39950920&tid=2038382]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 409ms |

| 0 / 0 |
