Как передать массив в класс
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Как передать массив в класс Expand / Collapse
Автор
Сообщение
05.05.2007 11:00
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 07.05.2007 12:40
Сообщ.: 2, Visits: 8
Если свойство класса представлено одним числом, то просто делается присваивание, обрабатываемое процедурой Property Let (или Set). А если свойством класса является массив значений, то как его передать в класс? При том, что VBA 6 допускает присваивать динамическому массиву другой массив, запись в виде A.Array1=Array2 выдает ошибку Can't assign to an array.

Неужели придется передавать массив в виде аргумента функции? Так не хочется. Верю, что должен быть человеческий способ присваивания массива свойству класса.

Помогите, кто что знает.

Сообщ. #913024
07.05.2007 9:26
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 26.10.2007 9:10
Сообщ.: 166, Visits: 1 538
Можно создать свой собственный тип, в описании которого будет указан массив нужной размерности и работать с переменными этого типа (в том числе и передавать их). Примерно так

Type MyType
  M(1 To 10) As Integer
End Type

Public Sub Test()
  Dim A As MyType, B As MyType, i As Integer
  For i = 1 To 10 'инициализация массивов 
    A.M(i) = i
    B.M(i) = 0
  Next i
  MsgBox B.M(3)
  B = A 'присвоение одному массиву значений другого
  MsgBox B.M(3)
End Sub


Сообщ. #913059
07.05.2007 12:48
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 07.05.2007 12:40
Сообщ.: 2, Visits: 8
Это и так понятно. Проблема только в том, что в классе нельзя создавать свои типы. Все равно спасибо. Я буду иметь в виду такую возможность.

Кстати, я разобрался со своей проблемой. Массив можно передавать в класс, только для этого его нужно присвоить переменной, которая в этом случае будет хранить ссылку на массив, и эту переменную можно присваивать свойству класса. А уже в классе можно написать инициализацию массива на основе этой переменной, только для этого надо писать цикл — обычное присваивание не поможет. Этот способ позволяет передавать массив в процедуру, функцию и получать из функции.

Сообщ. #913071
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, VladConn

Время GMT +3:00, Сейчас 10:44