|
|
#19 |
|
Участник
|
Цитата:
Изначально опубликовано db
И пятна на солнце бывают и аксапта людьми написана. А хорошо смеется тот, кто смеется последним Вот вам джобик, запустите, а я посмеюсь ![]() PHP код:
И ведь по результатам видно что происходит какая то хрень с преобразованием отрицательных чисел кратных 256 - такое ощущение что для них перед преобразованием в boolean сперва идет преобразование в однобайтовое число. Хотел бы я узнать каким алгоритмом пользуются создатели X++ при этом преобразовании что возникает такой нехарактерный глюк. По хорошему a == true на низком уровне должно преобразовываться в a != 0, а a == false в a == 0. Как тут можно допустить исключительные ситуации с отрицательными числами ума просто не приложу! Однако, я всё таки сейчас поулыбаюсь бледной улыбкаой, сразу после предыдущего попробуйте следующий джобик: PHP код:
![]() так что if ( tbl ) вполне корректно. В подтверждение этому обратите внимание на то что участок кода: Цитата:
inventTable.(fieldnum(Common, RecId)) = -512;
if (inventTable) { print "ok"; } else { print "!!!"; } if (inventTable.RecId && 100 > 4) { print "ok"; } else { print "!!!"; } b = inventTable && 100 > 4; if (b) { print "ok"; } else { print "!!!"; } Спасибо конечно за предупреждение - теперь буду проявлять осторожность при передаче чисел как параметров в ф-ии предполагающие boolean аргумент, но глядя на то сколько сравнений вида if ( tbl ) сидит в недрах sys слоя Аксапты я свою привычку менять не буду.
|
|
|
| Теги |
| recid, баг, ошибка, ax3.0 |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| if (record) vs if (record.RecId) | 18 | |||
| Как сформировать RecId | 18 | |||
| поля, содержащие RecId | 15 | |||
| aEremenko: Дефрагментация RecID | 2 | |||
| Два RecId у одной записи таблицы | 33 | |||
|