Visual Basic 6 Array как аргумент - PullRequest
4 голосов
/ 18 мая 2011

Это может звучать глупо, но я собираюсь выслушать.

У меня есть Sub, с помощью которого я хочу проанализировать массив и назначить его модулю класса "Object".

Как мне это сделать.

Что у меня есть, что не работает:

Private matrix(9,9) As Integer
'The Setter Sub
Public Sub SetMatrixArray(arrValToSet() as Integer)
    matrix = arrValToSet
End Sub


'In the caller module / class module I have the following code to parse the array.

Dim theArray(9,9) As Integer
Dim customObj as CustomObject
customObj.SetMatrixArray(theArray)

Я получаю следующее сообщение об ошибке:

Несоответствие типов: ожидается массив или определенный пользователем тип.

Ответы [ 3 ]

6 голосов
/ 19 мая 2011

Это работает:

 'In the caller module / class module I have the following code to parse the array.'
    Dim theArray(9,9) As Integer 
    Dim customObj as CustomObject 
    customObj.SetMatrixArray theArray

'The Class'

Private matrix() As Integer 
       'The Setter Sub '
       Public Sub SetMatrixArray(arrValToSet() as Integer)
       matrix = arrValToSet
    End Sub 

Так что удалите размеры матричного массива в вашем классе.Вы всегда можете реализовать проверку ошибок, если размеры должны быть точно равны 9.

РЕДАКТИРОВАТЬ: я удалил символы вокруг вызова процедуры, не думая во время тестирования, это может повлиять на ответ.

3 голосов
/ 19 мая 2011

Когда вы звоните customObj.SetMatrixArray(), попробуйте либо:

Отбрасывание скобок вокруг параметра процедуры:

customObj.SetMatrixArray theArray

- или -

Предварительный вызов по номеру Call:

Call customObj.SetMatrixArray(theArray)
3 голосов
/ 18 мая 2011

Я думаю, вам нужно передать массив как вариант для многомерных массивов

Public Sub SetMatrixArray(arrValToSet as Variant)
    matrix = arrValToSet
End Sub

Извлечь эту статью.

...