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