• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Выходное значение функции

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Всем привет!
Вот столкнулся с какой проблемой...
Есть библиотека... в ней функция которая должна вернуть массив вот такого вида (тип Variant)
[1] ( [1.1] [1.2] [1.3]...)
[2] ( [2.1] [2.2] [2.3]...)
[3] ( [3.1] [3.2] [3.3]...)
Массив нормально формируется... Но вот к сожалению не получается вернуть такой массив как результат работы функции... при присваивании результата функции возникает ошибка Несоответствие типов
Если использовать глобальную переменную (тип Variant) в этой библиотеке возникает вторая проблема - на клиентах 7.хх эта переменная пустая :(
Пишу и тестирую на 8.5.1 - все отлично!
Подскажите, как выйти из этой ситуации?
 
O

Omh

Это типа двухмерный массив string?

Можно его попробовать передать как параметр, заполнять в ф-ии, а из ф-ии возвращать boolean (т.е. True, если всё заполнилось правильно).

:(
 
K

KFire3

А можно попробовать определить такой тип данных как класс, ну и дальше с ним и работать как с классом.

Вынести функции работы с таким массивом как методы класса, и потом не парится с обработкой в основном коде.

Я вижу только плюсы :( И вообще, я бы даже сказал что пытаться работать с такими структурами данных как с массивами вариантов - это извращение. От вот таких вещей и получаются потом абсолютно нечитаемые портянки кода на 200-300 строк.
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
KFire3
неее... спасибо... класс как-то писать не хочется.... геморроя больше чем пользы.. по крайней мере в моем варианте

Добавлено: Medevic
Ну а чего код смотреть?

функция
Код:
Function MyFn( doc as notesdocument ) as Variant

MyArray формируется так.
Код:
Dim myArray as variant
......
If IsArray( myArray) Then
ReDim Preserve myArray( UBound( myArray) + 1 )							
Else
ReDim myArray( 0 )
End If
myArray( UBound( myArray) ) = cell

возвращаю значение так
MyFn = myArray
 
T

TIA

NickProstoNick
Всё работает. Пример:

Код:
Sub Initialize
Dim y%, x%, vYX, vYX2, s$

vYX2 = fill( vYX ) 'два способа заполнения

For y = 0 To Ubound( vYX2, 1 )
s = ""
For x = 0 To Ubound( vYX2, 2 )
s = s & vYX2( y, x ) & ","
Next
Print s
Next
End Sub


Function fill( v ) As Variant
Const DY%=3
Const DX%=4
Dim Arr$( DY, DX), x%, y%

For y = 0 To Ubound( Arr, 1 )
For x = 0 To Ubound( Arr, 2 )
Arr(y, x) = y*10 + x
Next		
Next
v = Arr
fill = Arr
End Function
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!