Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В чем разница между VarIsEmpty(NewVal) и VarIsNull(NewVal) ? [D7, ADS]


kyn66 ©   (2006-09-21 12:15:00) 

Уважаемые мастера, помогите разобраться в данной ситуации. При добавлении или редактировании данных в таблице использую следующий код:

var
 NewVal, TmpVal  : Variant;
begin
 NewVal := ClientTblDoccod.NewValue;
 TmpVal := ClientTblDocser.NewValue;
 if ((not VarIsEmpty(NewVal)) or (not VarIsNull(NewVal))) and
    (NewVal = '01') and
    ((not VarIsEmpty(TmpVal)) or (not VarIsNull(TmpVal))) then
    St.Append('Сообщение об ошибке');
end;


Может что не так с синтаксисом? Если в режиме редактирование ставлю пустым поле для TmpVal, или оно изначально пустое, то срабатывает добавление ошибочного сообщения. Т.е. оно не должно добавляться, когда NewVal = '01'и TmpVal - пустое, а оно всеравно добавляется.


umbra   (2006-09-21 15:23:00) [1]

VarIsClear(TmpVal) or VarIsClear(NewVal) or (NewVal = '01')


ЮЮ   (2006-09-21 12:39:00) [2]

NULL и Unasigned это ещё два возможных значения для Variant
VarIsEmpty(Unasigned) = true и false для других значений variant
VarIsNull(NULL) = true и false для других значений variant
Ни один variant не может быть сразу и NULL и Unasigned, поэтому
((not VarIsEmpty(TmpVal)) or (not VarIsNull(TmpVal))) ИСТИННО для люблго значения  TmpVal


ЮЮ   (2006-09-21 12:27:00) [3]

когда NewVal = '01' и TmpVal - пустое оно и не NULL тоже.

((not VarIsEmpty(TmpVal)) or (not VarIsNull(TmpVal)))  всегда ИСТИНА


Наверх

Титульная страница Поиск, карта сайта Написать письмо