Страница: 1 |
|
Вопрос: Подскажите с ParamArray
|
Добавлено: 28.10.03 14:27
|
|
Автор вопроса: Serg_xox
|
Как в вызвать функцию объявленую Function MyFunc(ParamArray InParam() As Variant) Если параметры заданы в масиве Dim Params() ReDim Params(2) Params(0) = "dd0" Params(1) = "dd1" Params(2) = "dd2" MyFunc Params При таком вызове у меня масив InParam имеет только один аргумент в котром содержится масив из трех значений, а мне нужно чтобы масив InParam и Params были идентичны.
Объявление фунукции MyFunc переделать нельзя.
Ответить
|
Номер ответа: 2 Автор ответа: Serg_xox
Вопросов: 1 Ответов: 3
|
Профиль | | #2
|
Добавлено: 28.10.03 14:37
|
Массив динамический и только в RunTime известен размер (Размер может быть достаточно большим)
Ответить
|
Номер ответа: 3 Автор ответа: LamerOnLine
ICQ: 334781088
Вопросов: 108 Ответов: 2822
|
Профиль | | #3
|
Добавлено: 28.10.03 15:13
|
Если нельзя изменить массив и нельзя изменить определение функции, то какого совета ты ждешь? Я бы просто убил ParamArray или сделал этот массив как Public чтобы не передавать его каждой функции. Разумеется, если с ним не часто работаешь. Можно, конечно, присваивать значения массиву уже внутри функции MyFunc, но это уже совсем бредово. Почему у тебя такие ограничения на определение функции?
Ответить
|
Номер ответа: 4 Автор ответа: Serg_xox
Вопросов: 1 Ответов: 3
|
Профиль | | #4
|
Добавлено: 28.10.03 15:24
|
Задача такая есть VBScript который пишет настройщик. С указанием функции входа и параметров ПРИМЕР <command name="Test"> <parameters> <par name="Id"/> <par name="Condition"/> </parameters> <Script startfunction="Main"> Sub Main(Id, Condition) .......... end Sub </Script> </command> Нужно этот скрипт запустить под VB Я использовал ScriptControl Там есть метод Run(ProcedureName as String, ParamArray Parameters() as Variant ) Теперь мне нужно запустить этот скрипт. Параметры динамически Функция уже определена
Ответить
|
Номер ответа: 5 Автор ответа: LamerOnLine
ICQ: 334781088
Вопросов: 108 Ответов: 2822
|
Профиль | | #5
|
Добавлено: 28.10.03 15:49
|
Мда, попал ты... Даже не знаю, что тут можно сделать. На ум приходит лишь тупой перебор количества параметров функцией case, и, в зависимости от этого, соответствующий синтаксис вызова функции. Я просто не знаю, как эти скрипты отреагируют на избыточные параметры. Так что, кроме case, ничего не вижу. Буду сам рад услышать свежие идеи.
Ответить
|
Номер ответа: 7 Автор ответа: Serg_xox
Вопросов: 1 Ответов: 3
|
Профиль | | #7
|
Добавлено: 29.10.03 14:37
|
Это VB6 масивы параметров там есть [Private | Public | Friend] [Static] Sub name [(arglist)] [statements] [Exit Sub] [statements] The arglist argument has the following syntax and parts: [Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]
Ответить
|
Номер ответа: 8 Автор ответа: Comanche
Вопросов: 87 Ответов: 459
|
Профиль | | #8
|
Добавлено: 30.10.03 19:42
|
А зачем тебе в данном случае ParamArray? Function MyFunc(ByRef InParam() As Variant) И всех делов... Ну а в теле функции проверь, что она все три "параметра" приняла нормально: For i = LBound(InParam) To UBound(InParam) Debug.Print CStr(i) + " : " + InParam(i) Next i Вообще-то, это простая передача массива Бэйсик-функции в качестве аргумента - один из тех случаев, когда подходит только ByRef, а не ByVal.
Ответить
|
Страница: 1 |
Поиск по форуму