powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передать Массив в функцию
8 сообщений из 8, страница 1 из 1
Передать Массив в функцию
    #39704360
Sema9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, помогите неграмотному
Необходимо передать массив в функцию
Если заполняю массив в ручную a(1)=1: a(2)=5: a(3)=7, то все работает
А если с помощью фунции Array(1, 5, 7), то выдает ошибку
Compile error:
Type mismatch: array or user-defined type expected
В ниже представленном коде если закомментировать строку Array_Bardak = Sum_Array(a()) и раскомментировать следующую строку Array_Bardak = Sum_Array(Array(1, 5, 7)) - выдает ошибку
Что надо поправить в коде ?



Function Array_Bardak()
Dim a(1 To 3) As Integer

a(1) = 1: a(2) = 5: a(3) = 7
Array_Bardak = Sum_Array(a())
'Array_Bardak = Sum_Array(Array(1, 5, 7))

End Function

Function Sum_Array(a() As Integer) As Integer
Dim i As Integer

For i = 1 To UBound(a)
Sum_Array = Sum_Array + a(i)
Next i

End Function
...
Рейтинг: 0 / 0
Передать Массив в функцию
    #39704367
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sema9если закомментировать строку Array_Bardak = Sum_Array(a()) и раскомментировать следующую строку Array_Bardak = Sum_Array(Array(1, 5, 7)) - выдает ошибкуА посмотреть, где ошибка и какая, религия не позволила? Как ты думаешь, можно обращаться к элементу трёхмерного массива как a(i)???
...
Рейтинг: 0 / 0
Передать Массив в функцию
    #39704426
Sema9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaSema9если закомментировать строку Array_Bardak = Sum_Array(a()) и раскомментировать следующую строку Array_Bardak = Sum_Array(Array(1, 5, 7)) - выдает ошибкуА посмотреть, где ошибка и какая, религия не позволила? Как ты думаешь, можно обращаться к элементу трёхмерного массива как a(i)???

А почему трехмерный ?
Вот пример из мелкософтовского мануала
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "Table"))
Здесь что, массив Array(Empty, Empty, Empty, "Table") четырехмерный ?
Или я чего-то не понимаю ?
...
Рейтинг: 0 / 0
Передать Массив в функцию
    #39704449
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sema9Akinaпропущено...
А посмотреть, где ошибка и какая, религия не позволила? Как ты думаешь, можно обращаться к элементу трёхмерного массива как a(i)???

А почему трехмерный ?
Вот пример из мелкософтовского мануала
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "Table"))
Здесь что, массив Array(Empty, Empty, Empty, "Table") четырехмерный ?
Или я чего-то не понимаю ?
да хоть 10-мерный, лишь бы памяти хватало.
или вы считает, что измерений не больше 3х? :)
...
Рейтинг: 0 / 0
Передать Массив в функцию
    #39704522
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sema9,
Функция Array возвращает массив типа Variant(), а у Вас все переменные Integer, отсюда Type mismatch.
...
Рейтинг: 0 / 0
Передать Массив в функцию
    #39704551
Sema9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КазанскийФункция Array возвращает массив типа Variant(), а у Вас все переменные Integer, отсюда Type mismatch.
И так не работает

Function Array_Bardak()
Dim a(1 To 3) As Variant
a(1) = 1: a(2) = 5: a(3) = 7
'Array_Bardak = Sum_Array(a())
Array_Bardak = Sum_Array(Array(1, 5, 7))
End Function

Function Sum_Array(a() As Variant) As Integer
Dim i As Integer
For i = 1 To UBound(a)
Sum_Array = Sum_Array + a(i)
Next i
End Function
...
Рейтинг: 0 / 0
Передать Массив в функцию
    #39704565
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sema9,
я немного ошибся, функция Array возвращает массив внутри единичной переменной типа Variant, т.е. Variant/Variant().
F1Array Function

Returns a Variant containing an array
Так что
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Function Array_Bardak()
Dim a(1 To 3) As Variant
a(1) = 1: a(2) = 5: a(3) = 7
'Array_Bardak = Sum_Array(a())
Array_Bardak = Sum_Array(Array(1, 5, 7))
End Function

Function Sum_Array(a As Variant) As Integer
Dim i As Integer
For i = 1 To UBound(a)
Sum_Array = Sum_Array + a(i)
Next i
End Function


или
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Function Array_Bardak()
Dim a() As Variant
'a(1) = 1: a(2) = 5: a(3) = 7
'Array_Bardak = Sum_Array(a())
a = Array(1, 5, 7)
Array_Bardak = Sum_Array(a)
End Function

Function Sum_Array(a() As Variant) As Integer
Dim i As Integer
For i = 1 To UBound(a)
Sum_Array = Sum_Array + a(i)
Next i
End Function

Вообще полезно аргументом функции иметь единичную переменную типа Variant. В этом случае в функцию можно почти что угодно.
И справку читайте, да.
...
Рейтинг: 0 / 0
Передать Массив в функцию
    #39704584
Sema9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КазанскийВообще полезно аргументом функции иметь единичную переменную типа Variant. В этом случае в функцию можно почти что угодно.
И справку читайте, да.

Спасибо огромное
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передать Массив в функцию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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