Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Complete Boolen Eval + Variant. Баг или нет? / 3 сообщений из 3, страница 1 из 1
12.07.2020, 21:30
    #39978718
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Complete Boolen Eval + Variant. Баг или нет?
Код:
Код: pascal
1.
2.
3.
  QueryActive := qTransfers.Active and not qTransfers.IsEmpty;
  IsOutToday := QueryActive and (qTransfers.FieldByName('ODATE').AsDateTime = Date);
  CanEditOut := IsOutToday and (qTransfers['PAYD'] < 2) and not qTransfers['BLOCKED'];

При qTransfers.Active = False выдаёт исключение "Field 'BLOCKED' not found" (непонятно, почему BLOCKED, а не PAYD?).

Если последнюю строчку изменить на
Код: pascal
1.
  CanEditOut := IsOutToday and (qTransfers['PAYD'] < 2) and (qTransfers['BLOCKED'] = False);


то всё работает как задумано. Это какие-то особенности преобразования Variant -> Boolean или просто баг?

CBE отключено.
...
Рейтинг: 0 / 0
12.07.2020, 23:00
    #39978734
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Complete Boolen Eval + Variant. Баг или нет?
А так ?
Код: pascal
1.
CanEditOut := IsOutToday and (qTransfers['PAYD'] < 2) and not boolean(qTransfers['BLOCKED'])
...
Рейтинг: 0 / 0
12.07.2020, 23:03
    #39978737
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Complete Boolen Eval + Variant. Баг или нет?
Я, например, пишу так, чтобы не надеяться на всякие CBE
Код: pascal
1.
2.
3.
4.
var F: boolean;
F := qTransfers.Active and not qTransfers.IsEmpty;
if F then F := qTransfers['ODATE'] = Date();
if F then F := (qTransfers['PAYD'] < 2) and not boolean(qTransfers['BLOCKED']);
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Complete Boolen Eval + Variant. Баг или нет? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]