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

Тема в разделе "Lotus - Программирование", создана пользователем NickProstoNick, 4 дек 2009.

  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Всем привет!
    Вот столкнулся с какой проблемой...
    Есть библиотека... в ней функция которая должна вернуть массив вот такого вида (тип 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 - все отлично!
    Подскажите, как выйти из этой ситуации?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Это типа двухмерный массив string?

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

    :(
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Аха.. именно... слово из головы вылетело

    Попробую...
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Интересно. А код можно посмотреть?
     
  5. KFire3

    KFire3 Гость

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

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

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    KFire3
    неее... спасибо... класс как-то писать не хочется.... геморроя больше чем пользы.. по крайней мере в моем варианте

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

    функция
    Код (Text):
    Function MyFn( doc as notesdocument ) as Variant
    MyArray формируется так.
    Код (Text):
    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
     
  7. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    NickProstoNick
    Всё работает. Пример:

    Код (Text):
    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
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Потому что массив нормально присваивается.
    А у тебя массив массивов, как я теперь понял, а не массив стрингов.

    Добавлено: Я делал как советует KFire3. :(
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Medevic
    Ну так по моему я в первом посте описывал типы данных

    Да похоже что и мне придется так же делать.... ненавижу я классы :(
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Третий пост сбил с толку. :(
     
  11. KFire3

    KFire3 Гость

    Вы просто не умеете их готовить :(
     
  12. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    сделал через класс... все нормально....
    Всем спасибо!

    Добавлено:
    просто потом приходится компилировать код полностью :(
     
Загрузка...

Поделиться этой страницей