Работа с объектами по ссылке

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Работа с объектами по ссылке

Сообщение Faust » 21.03.2005 (Пн) 0:26

Можно ли по ссылке (полученна по VarPtr) на экземпляр класса:
а) прочитать некоторые его поля;
б) вызвать его метод.
Ежели можно, то как?
Листинги не горят!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.03.2005 (Пн) 0:50

Нельзя. Это ссылка не на экземпляр, а на переменную.
По ссылке, полученной по ObjPtr - можно. Она - как раз на экземпляр.
Как - см. в статье GSerg-а про не-IUnknown-овые объекты ;-)
Но есть способы проще.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.03.2005 (Пн) 4:42

Ээээ... Тёмыч :)

Если
Код: Выделить всё
dim obj as object
, а также
Код: Выделить всё
private declare function GetMem4 lib "msvbvm60" (pSrc as any, pDst as any) as long
, и при этом всём нам дают varptr(obj), то
Код: Выделить всё
dim obj2 as object
getmem4 byval varptr(obj), obj2
.

Вернее даже, для соблюдения подсчёта ссылок,
Код: Выделить всё
Private Declare Function SetMemObj Lib "msvbvm60" (ByVal ppObj As Long, ByVal pNewObjValue As Long) As Long



Или я чё-то не понял? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Работа с объектами по ссылке

Сообщение codemaster » 21.03.2005 (Пн) 13:13

Faust писал(а):Можно ли по ссылке (полученна по VarPtr) на экземпляр класса:
а) прочитать некоторые его поля;
б) вызвать его метод.
Ежели можно, то как?



прочти думаю пригодится
http://www.vbaccelerator.com/home/VB/Co ... rticle.asp
//<-
Mit freundlichen Grüßen
//->


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 70

    TopList