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

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

Присвоение свойству 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


Наверх

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