powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / кол-во элементов в массиве
7 сообщений из 32, страница 2 из 2
кол-во элементов в массиве
    #34335443
Х-men2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проходящий X-men2А можно ли какой-либо переменной присвоить(поставить в соответсвие) адрес этого массива? Но только не через varptr, а как бы просто указатель, который передавал бы не адрес а сам массив. Я вот никак сам не разберусь, может при помощи Set?

Да вроде все просто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function Test_array()
Dim ar( 1 )
ar( 1 ) = "Here you are"
Test_array = ar
End Function

Sub test()
Dim my_array
my_array = Test_array
Debug.Print my_array( 1 )
End Sub
или я не понимаю что требуется...

AndrFВообще-то это дело в байтовый массив просится, насколько я понимаю, если это Hex-коды. Или вообще в Long, если это число: CLng(&H000EC000) или CLng("&H" & "000EC000").
Ну короче, я и сам не совсем разобрался что требуется, но вот только в Delphi ссылка создается с помощью символа @. Т.е. допустим Z - массив, @Z - ссылка на массив, но если смотреть на это в debuger(e) то передается не адрес, а сам массив, но это опять же в Delphi, а вот в Basic как?.....

Согласен. Скорее всего можно простыми битовыми операциями решить задачу. но автор хочет так.
...
Рейтинг: 0 / 0
кол-во элементов в массиве
    #34335508
Х-men2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Х-men2 Проходящий[quot X-men2]А можно ли какой-либо переменной присвоить(поставить в соответсвие) адрес этого массива? Но только не через varptr, а как бы просто указатель, который передавал бы не адрес а сам массив. Я вот никак сам не разберусь, может при помощи Set?

Да вроде все просто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function Test_array()
Dim ar( 1 )
ar( 1 ) = "Here you are"
Test_array = ar
End Function

Sub test()
Dim my_array
my_array = Test_array
Debug.Print my_array( 1 )
End Sub
или я не понимаю что требуется...

AndrFВообще-то это дело в байтовый массив просится, насколько я понимаю, если это Hex-коды. Или вообще в Long, если это число: CLng(&H000EC000) или CLng("&H" & "000EC000").
Ну короче, я и сам не совсем разобрался что требуется, но вот только в Delphi ссылка создается с помощью символа @. Т.е. допустим Z - массив, @Z - ссылка на массив, но если смотреть на это в debuger(e) то передается не адрес, а сам массив, но это опять же в Delphi, а вот в Basic как?.....
...
Рейтинг: 0 / 0
кол-во элементов в массиве
    #34335785
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Х-men2Ну короче, я и сам не совсем разобрался что требуется, но вот только в Delphi ссылка создается с помощью символа @. Т.е. допустим Z - массив, @Z - ссылка на массив, но если смотреть на это в debuger(e) то передается не адрес, а сам массив, но это опять же в Delphi, а вот в Basic как?.....

F1 и делее ищем ByRef .
...
Рейтинг: 0 / 0
кол-во элементов в массиве
    #34336057
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Держи пример - передача массива по ссылке и по значению:

Public Sub Main()
Dim m() As String, i As Long

ReDim m(2)

For i = 0 To UBound(m)
m(i) = "Тест " & i
Next i

Debug.Print "ByVal Before --------"
MyProcByVal m

Debug.Print "ByVal After --------"
For i = 0 To UBound(m)
Debug.Print m(i)
Next i

Debug.Print "ByRef Before --------"
MyProcByRef m

Debug.Print "ByRef After --------"
For i = 0 To UBound(m)
Debug.Print m(i)
Next i
End Sub

Private Sub MyProcByVal(ByVal m As Variant)
Dim i As Long
For i = 0 To UBound(m)
Debug.Print m(i)
Next i
m(1) = "Тестик ByVal"
End Sub

Private Sub MyProcByRef(ByRef m() As String)
Dim i As Long
For i = 0 To UBound(m)
Debug.Print m(i)
Next i
m(1) = "Тестик ByRef 1"
End Sub
...
Рейтинг: 0 / 0
кол-во элементов в массиве
    #34336650
X-men2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
M.. спасиб. Будем разбираться.
...
Рейтинг: 0 / 0
кол-во элементов в массиве
    #34346419
X-men2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndrF Х-men2Ну короче, я и сам не совсем разобрался что требуется, но вот только в Delphi ссылка создается с помощью символа @. Т.е. допустим Z - массив, @Z - ссылка на массив, но если смотреть на это в debuger(e) то передается не адрес, а сам массив, но это опять же в Delphi, а вот в Basic как?.....

F1 и делее ищем ByRef .
Нет, с этим беда, Basic не лицензионный(естественно), MSDNa нет...
А в инете никак не нарою внятных примеров использования директивы ByRef/
...
Рейтинг: 0 / 0
кол-во элементов в массиве
    #34352586
blinow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парень заморочился. Это Basic, тут усе просто и иногда тупо.
По умолчанию все параметры передаются ByRef, т.е. получив параметр в процедуре, ты его меняешь и он меняется во всей проге, ежели написать ByVal, тогда передаешь значение и скока ты его не меняй в процедуре, в основной проге он не измениться.
С массивами не морочься, объви его Public и ковыряйся скока хочешь
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / кол-во элементов в массиве
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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