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

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

Наследник TDataSet и TField.IsNull


Token ©   (2016-04-20 11:57:00) 

Создал наследника TDataSet для определенного формата файлов.
При вызове функции у поля Field.IsNull в функцию TDataSet.GetFieldData(Field: TField; Buffer: Pointer): Boolean; передается Buffer=nil. Как правильно на это отреагировать вернуть результат false; или true, но не заполняя buffer. Или может у меня где-то в другом месте сидит ошибка(что-то не перекрыл, не дописал)?..
Так-то вроде работает все правильно, файлы читаются и пишутся через этот класс


  (2016-04-21 15:32:00) [1]

Удалено модератором


  (2016-04-21 15:05:00) [2]

Удалено модератором


  (2016-04-21 14:53:00) [3]

Удалено модератором


Token   (2016-04-20 13:28:00) [4]

Т.е. если даже некуда писать данные, но они есть надо возвращать true.


Token   (2016-04-20 13:25:00) [5]

Ступил, начал в глубь рыть, а решение на поверхности

function TField.GetIsNull: Boolean;
begin
 Result := not GetData(TValueBuffer(nil));
end;


Token   (2016-04-20 13:18:00) [6]

В том-то и проблема, что  GetFieldData скрыта за драйвером БД, не посмотреть как проводится проверка на Buffer=nil


sniknik   (2016-04-20 12:50:00) [7]

> Как правильно на это отреагировать вернуть результат false; или true
посмотреть как уже у других сделано, в "генофонд", а он при значении null в AsBoolean возвращает false.


Наверх

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