powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Адрес переменной
15 сообщений из 15, страница 1 из 1
Адрес переменной
    #34964212
Ильгиз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Хотелось узнать, можно ли вернуть адрес проинициализированной переменной?
Как понял, AddressOf действует только для процедур.
...
Рейтинг: 0 / 0
Адрес переменной
    #34964214
Ильгиз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В VBA, забыл сказать.
...
Рейтинг: 0 / 0
Адрес переменной
    #34964283
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VarPtr
...
Рейтинг: 0 / 0
Адрес переменной
    #34964387
Ильгиз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага.
Код: plaintext
1.
VarPtr(MyVar)
позволяет получить адрес переменной. А как изменить значение, хранимое по этому адресу?
...
Рейтинг: 0 / 0
Адрес переменной
    #34964826
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от типа значения.
...
Рейтинг: 0 / 0
Адрес переменной
    #34965538
Ильгиз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну от числовых и строчных переменных? Какие операторы?
...
Рейтинг: 0 / 0
Адрес переменной
    #34965613
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Dim x as Long (Integer, Double, etc)
CopyMemory x, VarPtr(y), Len(x)
Если x as String, то StrPtr(y).

Однако в этом нет ни малейшего смысла. Если известна переменная от которой берется указатель, то делается тупо x = y. Зачем ее значение извлекать через жопу?
...
Рейтинг: 0 / 0
Адрес переменной
    #34965683
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, пардон нужно же изменить, а не получить.
Код: plaintext
CopyMemory VarPtr(y),  1000 , Len(x)
Однако тут появляется следующий вопрос: зачем так поступать, если y = 1000 есть то же самое?
...
Рейтинг: 0 / 0
Адрес переменной
    #34966845
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
всё-таки, либо CopyMemory y, ..., либо CopyMemory ByVal VarPtr(y), ..., если Declare ... CopyMemory ... (lpDestination As Any, ...
;-)
...
Рейтинг: 0 / 0
Адрес переменной
    #34966853
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
всё-таки, либо CopyMemory y, ..., либо CopyMemory ByVal VarPtr(y), ..., если Declare ... CopyMemory ... (lpDestination As Any, ...
;-)
...
Рейтинг: 0 / 0
Адрес переменной
    #34966856
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон за дублирование, связь плохая.
...
Рейтинг: 0 / 0
Адрес переменной
    #34966929
Ильгиз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему это нужно?
Просто я делаю вызов функции, которая изменяет значения нескольких переменных. Вернуть можно только одно значение, а объявлять их как Public вовсе не хотелось:)
...
Рейтинг: 0 / 0
Адрес переменной
    #34966945
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИльгизПочему это нужно?
Просто я делаю вызов функции, которая изменяет значения нескольких переменных. Вернуть можно только одно значение, а объявлять их как Public вовсе не хотелось:)
Код: plaintext
1.
2.
3.
4.
5.
6.
        Dim regim()                 ' режим дня
        ReDim Preserve regim( 0 ):    regim( 0 ) = nd
        ReDim Preserve regim( 1 ):    regim( 1 ) = no
        ReDim Preserve regim( 2 ):    regim( 2 ) = ko
        ReDim Preserve regim( 3 ):    regim( 3 ) = kd
        
        regim = ArraySort(regim)
я бы посоветовал массив использовать
...
Рейтинг: 0 / 0
Адрес переменной
    #34967225
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктAntonariy,
всё-таки, либо CopyMemory y, ..., либо CopyMemory ByVal VarPtr(y), ..., если Declare ... CopyMemory ... (lpDestination As Any, ...
;-)Ну да, CopyMemory y. Попутал слегка ).
...
Рейтинг: 0 / 0
Адрес переменной
    #34970532
Ильгиз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про массив я и забыл совсем.) А то как-то расхотелось с указателями связываться. Спасибо всем за помощь.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Адрес переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]