Полноценные указатели

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Lord_Satan
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 08.12.2001 (Сб) 10:26
Откуда: П.-К.

Полноценные указатели

Сообщение Lord_Satan » 18.06.2004 (Пт) 18:17

Есть идея как реализовать сабж

есть массив
data&(999999)
переменная
p&
адрес которой совпадает с адресом data(0), и переменная
pp&
значение которой хранит адрес data(0).

Думаю это можно сделать с помощью сторонней dll, на Сpp или ASM
dll.SplitPtr(byref p, byref pp, byref data(0))

for i=0 to 999999
p = 100
pp = pp + 4
'или data(i) = 100
next

Хотя может я не прав, это невозможно реализовать
поясните мне, т.к. с помощью CopyMemory, GetMem и PutMem
этого сделать у меня не получилось

Такая dll у меня будет по умолчанию во всех прожектах
Space Ace says: "Whant to be a DREAD courier?"

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

Сообщение GSerg » 19.06.2004 (Сб) 2:11

Ты не сможешь сделать так, чтобы адрес одной встроенной переменной совпадал с адресом другой. Никак. Если она глобальная - адрес вычисляется при компиляции, для изменения придётся лопатить весь экзешник. Если локальная - она в стеке, и снова никак до неё не докопаешься. С SAFEARRAY получилось лишь потому, то это изначально указатель на указатель.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Lord_Satan
Обычный пользователь
Обычный пользователь
 
Сообщения: 76
Зарегистрирован: 08.12.2001 (Сб) 10:26
Откуда: П.-К.

Альтернатива

Сообщение Lord_Satan » 19.06.2004 (Сб) 6:55

8(
а я уже слюни распустил

Ладно, а можно получить адрес ячейки памяти где хранится адрес data(0)?
Если в ВБ нельзя, то опять же c помощью dll
Space Ace says: "Whant to be a DREAD courier?"


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList  
cron