![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Присвоение свойству OLE объекта значения NULL
Kettle © (2014-10-23 15:53:00)Доброго времени суток, уважаемые мастера!
Имеется OLE-объект. В руководстве сказано, что для получения нужной информации одному из свойств этого объекта следует присвоить значение NULL (в VB Nothing).
пишу:
a.value := null;
после этогоVarIsNull(a.value)возвращает false;
Аналогичная ситуация, если null заменить на nil...
Какого типа NULL мне использовать: nil, null? Это нормально, что после присвоения, VarIsNull возвращает false?
Styx (2014-10-29 18:58:00) [1]Гугель предлагает делать так: http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.database.ado/2006-06/msg00130.html
Dennis I. Komarov (2014-10-28 22:01:00) [2]Ага, и объекта поди никакого нет и не было...
Плохиш (2014-10-28 16:32:00) [3]
> Access Violation at address ... Read of address 00000000.
это не null, a nil
Kettle (2014-10-28 15:34:00) [4]При этом я знаю, какие свойства были бы в объекте a.value, если бы он там был. Попытка вызвать эти свойства приводят к возникновению исключения: Access Violation at address ... Read of address 00000000. Т.е. видно, что объекта там никакого нет.
Kettle (2014-10-28 15:26:00) [5]
> Может "value" в "a" только для чтения или NOT NULL?
В документации явно указано, что "a" и для чтения и для записи.
> if not(VarIsNull(v) or VarIsEmpty(v)) then
Оба false...
> очень странно присваивать одно, а проверять на другое.
И на Empty проверял. Результат тот же.
> тогда проверяй через VarIsClear
Тоже false.
> А что возвращает VarIsNull(a)?
False. Объект "A" присутствует. Я работаю и с его свойствами, и с методами.
manaka (2014-10-26 13:26:00) [6]
> пишу:
> a.value := null;
> после этого VarIsNull(a.value) возвращает false;
А что возвращает VarIsNull(a)?
Kilkennycat (2014-10-24 23:42:00) [7]
> > Unassigned ещё можно попробовать
>
> Тоже в итоге VarIsNull = false.
очень странно присваивать одно, а проверять на другое.
> тип свойства - varDispatch
тогда проверяй через VarIsClear
DQ (2014-10-24 17:45:00) [8]Может "value" в "a" только для чтения или NOT NULL?
Когда-то я получал OLE-объект и работал с ним. И проверки VarIsNull давали false, хотя по логике ожидалось Null. Да и при работе с ним выбрасывалось что-то вроде "ошибка, объект Null".
И мне пришлось всегда проверять так:
if not(VarIsNull(v) or VarIsEmpty(v)) then
Kettle (2014-10-24 16:00:00) [9]
> а там не varEmpty нужен? или EmptyParam
EmptyParam приводит к ошибке типов.
> а вообще, сначала нужно задаться вопросом, какого типа a.
> value
Это объект со своими свойствами.
FindVarData(V)^.VType показывает, что тип свойства - varDispatch и до присвоения null, и после.
> null - переменная, не имеющая значения (не то же самое,
> что пустая)
> nil - константа, оно же Pointer(0)
Это-то я знаю, но смущает то что VarIsNull возвращает false.
> Unassigned ещё можно попробовать
Тоже в итоге VarIsNull = false.
Dimka Maslov (2014-10-23 22:02:00) [10]Unassigned ещё можно попробовать
Kilkennycat (2014-10-23 17:45:00) [11]
> Какого типа NULL мне использовать
ну раз используешь VarIsNull, то какого типа?
а вообще, сначала нужно задаться вопросом, какого типа a.value.
> nil, null?
null - переменная, не имеющая значения (не то же самое, что пустая)
nil - константа, оно же Pointer(0)
junglecat (2014-10-23 17:36:00) [12]а там не varEmpty нужен? или EmptyParam