![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наследник 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.