|
|
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ъъъъъ А сишников с первого класса учат, что сравнивать с true нельзя Действительно, при проверке булевой переменной Код: pascal 1. 2. всегда производится сравнение с $00, в отличие от... Но если уж очень хочется сравнивать с True, то вместо конструкции Код: pascal 1. 2. 3. всегда лучше сравнивать с False Код: pascal 1. 2. 3. Впрочем, все же лучше выявить причину, почему в булевой переменной не 0 и не 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 22:25 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Sergi Да, всё дело оказалось в булевских переменных. Причина оказалось в том, что в какой-то булевой переменной содержится не 0 и не 1? Тогда замена boolean на integer - по сути, шило на мыло. Лучше найти причину, почему значение булевой переменной не 0 и не 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 22:29 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov Лучше найти причину, почему значение булевой переменной не 0 и не 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 22:31 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
rgreat Polesov Лучше найти причину, почему значение булевой переменной не 0 и не 1. Вроде бы речь шла о глобальных переменных, а они инициализируются. Гораздо хуже, если где-нибудь ошибочное явное приведение типа. В этом случае даже переименование переменных может не помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 23:01 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov Вроде бы речь шла о глобальных переменных, а они инициализируются. Как мы недавно обнаружили в старых версиях дельфи - не всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2020, 23:08 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
DarkMaster Классы + глобали под запретом уже? Это с какого перепугу-то? С того момента, когда начинают глобальные переменные не по назначению использовать. Вся логика кладётся на какие - то глобальные переменные, а не переменные - созданного экземпляра класса. Что нарушает логику и создаёт дыры в программе. Зачем тогда вообще использовать в таком случае, объектно-ориентированное программирование [quot Polesov#22122849]всегда производится сравнение с $00, в отличие от...[/src] Да какая разница что с чем сравнивается ? Я уже давно написал, что можно сравнивать с чем угодно. Но это похоже на баг в компиляторе , ибо тут в любом случае должна быть проверка посредством команды в случае true = (test с je) \ false = (test и jne) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 00:25 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 00:43 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:05 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Но это похоже на баг в компиляторе ВсеРазумныйв любом случае должна быть проверка посредством команды в случае true = (test с je) \ false = (test и jne) Согласен с тем, что test оптимальнее cmp, но логика от этого не меняется. Или что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:13 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov, Ещё как вариант, лень программистов. Boolean не может иметь не 1 и не 0. По этому всегда компиляторы генерят test X, X А тут Delphi программисты решили схитрить, и приравнять к байту. А возможно и баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:20 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
У кого есть лазарус, могут проверить как там с этим делом обстоит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:20 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:26 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный ... С того момента, когда начинают глобальные переменные не по назначению использовать. Вся логика кладётся на какие - то глобальные переменные, а не переменные - созданного экземпляра класса. Что нарушает логику и создаёт дыры в программе. Зачем тогда вообще использовать в таком случае, объектно-ориентированное программирование ... Памас, ты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:27 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Polesov, Ещё как вариант, лень программистов Скорее уж, формальный подход. Проверяем логическое значение - сравниваем с нулем (через test или cmp - не суть) Сравниваем с True или False - сравниваем с 1 или 0 соответственно. Как по мне, так это правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:31 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
rgreat Polesov На мой взгляд, переменные, объявленные в теле dpr - особый вид глобальных переменных. Можно их, конечно, передать куда-либо по указателю, но какова целесообразность этого? Впрочем, на практике может быть все, что угодно ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 01:36 |
|
||
|
Почему конструкция - if ((a=true) and (b=true) and (c=true)) с тремя and не работает?
|
|||
|---|---|---|---|
|
#18+
Polesov, Ну как сказать, 36 строк генерирует данный код Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: sql 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. 48. 49. 50. 51. 52. 53. 54. 55. Без комментариев Код: sql 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. Аналогичный код на Сях под клангом 10 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 23 строчки Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Ну видно Delphi что - то известнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2020, 02:10 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39951563&tid=2038382]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 351ms |

| 0 / 0 |
