Как работать с адресами?

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

Как работать с адресами?

Сообщение Александр Андреев » 23.04.2003 (Ср) 18:04

Есть адрес объекта определенного типа (пусть Integer):

Код: Выделить всё
lpMyInt As Long

Есть объект типа Integer:

Код: Выделить всё
MyInt As Integer


Как мне сделать так, чтобы через MyInt работать именно с тем объектои, на который указывает lpMyInt?

vovchikxxx
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 22.01.2003 (Ср) 19:32
Откуда: Сергиев Посад

Сообщение vovchikxxx » 24.04.2003 (Чт) 1:35

Помоему в VB проблемы с динамическими типами данных...
Все будет Хорошо!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.04.2003 (Чт) 8:58

В VB есть функция VarPtr (а также StrPtr и ObjPtr), но официально они не поддерживается и хэлпа по этим функциям нет.
Твой случай это lpMyInt = VarPtr(MyInt).
Lasciate ogni speranza, voi ch'entrate.

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 24.04.2003 (Чт) 9:14

А мне наоборот надо:

Код: Выделить всё
MyInt = SomeFunc( lpMyInt )


чтобы потом можно было вот так:

Код: Выделить всё
MyInt = 5

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.04.2003 (Чт) 9:19

То есть? Тебе надо передать в качестве аргумента к функции не значение переменной, а ссылку на нее? Так ведь это просто ByRef. Или чтобы при присвоении MyInt=5 вызывалась функция SomeFunc?
Lasciate ogni speranza, voi ch'entrate.

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 24.04.2003 (Чт) 9:41

Мне вот что надо:
Есть процедура, которой передается аргумент:

Код: Выделить всё
Sub MySub(lpArg As Long)

lpArg - это указатель на некоторый объект. Передает его апишная функция, я повлиять не могу.
Зато я знаю какого типа этот объект. Поэтому все что мне надо, это внутри MySub работать с объектом, на который указывает lpArg. А как это сделать - вопрос.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.04.2003 (Чт) 11:09

А фиг его знает :)
lpArg это указатель на объект Arg. А какого типа Arg? Если это переменная, то в нее можно записывать значение при помощи API CopyMemory. А если объект, то наверное нельзя (во всяком случае ИМХО).
А вообще, если сможешь, достань хелп от VB3, в то время эти функции (???Ptr) поддерживались и по ним есть неплохая документация.
Lasciate ogni speranza, voi ch'entrate.

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 24.04.2003 (Чт) 11:35

О, вот это уже идея :)
Попробую...


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

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

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

    TopList