Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Передать ссылку на массив Добавлено: 21.06.02 10:17  

Автор вопроса:  sv69
Подскажите пожалуйста, можно ли передать ссылку на массив
(находящийся в программе) в разрабатываемый мною
ActiveX Control, чтобы этот (именно этот) массив был доступен в любых процедурах внутри Control?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 SAVok



ICQ: 155153916 

Вопросов: 2
Ответов: 126
 Профиль | | #1 Добавлено: 21.06.02 14:08

Как Variant!!!

Вот тебе пример

в ActuveX:

Public Sub PrnArray(ar As Variant)
    Dim i As Integer, ub As Integer, arr() As Byte
    If Not IsEmpty(ar) Then
        arr = ar
        ub = UBound(arr) - 1
        For i = 0 To ub
            MsgBox Val(arr(i))
        Next i
    End If
End Sub

В форме где он есть

Private Sub Command1_Click()
    Dim a(2) As Byte, b As Variant
    a(0) = 1
    a(1) = 2
    b = a
    UC11.PrnArray (b)
End Sub

Sorry, за имена... торопился... UC11 - имя AxtiveX Control

Ответить

Номер ответа: 2
Автор ответа:
 sv69



Вопросов: 3
Ответов: 3
 Профиль | | #2 Добавлено: 21.06.02 15:01

В этом примере доступна копия, а не сам массив.

Ответить

Номер ответа: 3
Автор ответа:
 Strannik



Вопросов: 9
Ответов: 112
 Профиль | | #3 Добавлено: 21.06.02 16:50
Почему копия ? Судя по коду переменная передается по ссылке.

Ответить

Номер ответа: 4
Автор ответа:
 SAVok



ICQ: 155153916 

Вопросов: 2
Ответов: 126
 Профиль | | #4 Добавлено: 21.06.02 17:02

Strannik совершенно прав! Variant не может чисто физически вместить в себя массив!!! Он хранит указатель на массив! А еще по умолчанию все параметры в VB передаются по ссылке!!!

Я что то не правильно сказал?

Ответить

Номер ответа: 5
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 22.06.02 09:48

 Господа, может быть я чего брякну не то (только проснулся), но кажется чтобы передать переменную не по ссылке, а по значению нужно написать так:

Public Sub PrnArray(By Val ar As Variant)

Ответить

Номер ответа: 6
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 22.06.02 20:50

Если массив будешь изменять, то нужно написать так:

Public Sub PrnArray(ar As Variant)

Если не будешь изменять, то лучше так (быстрее):

Public Sub PrnArray(By Val ar As Variant)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам