Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.07.24;
Скачать: CL | DM;

Вниз

Присвоение свойству 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
15-1445526860
Dimka Maslov
2015-10-22 18:14
2016.07.24
Чем теперь давить рекламу?


3-1308474984
Oleg_teacher
2011-06-19 13:16
2016.07.24
Связаные таблицы в БД


3-1307688717
Kley
2011-06-10 10:51
2016.07.24
Проблема с передачей параметра в запрос


15-1443303004
Юрий
2015-09-27 00:30
2016.07.24
С днем рождения ! 27 сентября 2015 воскресенье


15-1445327322
K-1000
2015-10-20 10:48
2016.07.24
Record -> String