Добавление значения в конец списка

Тема в разделе "Lotus - Программирование", создана пользователем fvoice, 1 авг 2007.

  1. fvoice

    fvoice Гость

    Есть переменная Array, тип Variant, нужно поместить произвольную строку в конце списка:
    допустим
    Array(0) = "1"
    Array(1) = "2"

    как на скриптах добавить элемент Array(2) = "3"?

    P.S. Извините за глупый вопрос, в голову ничего не лезет..
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    ArrayAppend
     
  3. fvoice

    fvoice Гость

    Я уже пробовал, но может не правильно, т.к. конструкция типа:
    Код (Text):
    Array = ArrayAppend(Array,"qwer")
    не работает..
    Medevic будь добр просвети пожалуйста почему?
     
  4. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ошибку выдает или как не работает ?
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: fvoice
    Error handling
    ArrayAppend throws a Type mismatch error if:
    sourceArray1 is not an array
    an array with more than one dimension is used


    Проверте что у Вас за массив Array
    на крайняк
    i = Ubound(Array) + 1
    Redim Preserve Array( i )
    Array( i ) = "123"
     
  6. fvoice

    fvoice Гость

    Говорит Type Mismatch при выполнении.
     
  7. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: fvoice
    Значит читай пост выше почему ошибка выскакивает. :rolleyes:
     
  8. fvoice

    fvoice Гость

    Для: Morpheus

    дык... Array - variant
     
  9. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: fvoice
    так он array или Variant ???

    проверкить легко - IsArray

    Tests the value of an expression to determine whether it is an array.
    Syntax
    IsArray ( expr )
    Elements
    expr
    Any expression.
    Return value
    IsArray returns TRUE (-1) if expr is an array; otherwise IsArray returns FALSE (0).
     
  10. fvoice

    fvoice Гость

    Я передаю в функцию Item.Values, это и получается Array, поэтому он Variant, мне нужно прибавить к нему строку и вернуть ее обратно.
     
  11. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: fvoice
    Всё должно работать. Ошибка точно в этой строке? Дебаггером пользовался?
     
  12. fvoice

    fvoice Гость

    Для: Medevic
    Да, только там чуть по другому:
    но это ничего не меняет.

    наверное, придется переделать в процедуру, передавать как item и добавлять AppendToTextList...
     
  13. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: fvoice
    Как Array получаешь? В дебаггере это массив?
     
  14. Sandr

    Sandr Гость

    Если масив объявлен как масив определенной размерности, то надо сделать redim preserve
     
  15. Azrael

    Azrael Гость

    Используй списки:
    Код (Text):
    Dim array List As String
    Подробнее - в справке.
     
  16. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Раз пошла такая пьянка, то тоже спрошу. В общем, у меня имеется схожая задача, только значение нужно дописать не просто в массив, а в поле документа. Пытаюсь делать так:
    Код (Text):
    Dim arr As Variant
    arr = doc.GetItemValue("SomeField")
    arr = Arrayappend(arr, <какое-то значение>)
    doc.ReplaceItemValue "SomeField", arr
    Так вот, если в даном поле документа еще нет значений, то на строке с Arrayappend Lotus Notes (версия 5.0.4а) торжественно обрушивается. Знает ли кто-нибудь, что это за ерунда и как это половчее обойти?
     
  17. fvoice

    fvoice Гость

    Для: LuMee
     
  18. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: LuMee
    Вам наверное лучше пользоваться

    AppendToTextList method

    For an item that's a text list, adds a new value to the item without erasing any existing values.


    Syntax
    Call notesItem.AppendToTextList( newValue )
    Parameters
    newValue
    String or array of strings. The string(s) you want to add to the item.


    Код (Text):
    Dim doc As NotesDocument
    Dim item As NotesItem
    ' ...set value of doc...
    Set item = doc.GetFirstItem( "Categories" )
    Call item.AppendToTextList( "Shocks" )
    Call doc.Save( False, True )
     
  19. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Для: fvoice, Morpheus
    Я так понимаю, что сей метод жует только строки. Мне, увы, нужно работать с датами, так что такой вариант не подходит :rolleyes:
     
  20. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: LuMee
    Redim тебя спасёт. Или Evaluate.
     
Загрузка...

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