Массив Собственного Типа И Redim Preserve

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

  1. dimat

    dimat Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    31 июл 2008
    Сообщения:
    516
    Симпатии:
    0
    Всем привет!

    Описан тип:
    Код:
    Type myt
    p1 As String
    p2 As String
    End Type
    Объявлен массив:
    Код:
    Dim arr() As myt
    Redim arr(1,1)
    arr(1,1).p1="p1value"
    arr(1,1).p2="p2value"
    Необходимо в массив добавить новый элемент и, следовательно, увеличить размерность.
    Пытаюсь делать так:
    Код:
    Redim Preserve arr(2,1)
    arr(2,1).p1="p1value2"
    На строке
    Код:
    Redim Preserve arr(2,1)
    ошибка "Subscript out of range".

    Пока это все дело работает через промежуточный массив, то есть redim без preserve работает номарльно.

    Подскажите какие еще варианты решения есть?
     
  2. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    dimat
    так это... Redim работает только для последнего индекса.
    То есть Arr(1,1) -> Arr(1,2) OK!
    Arr(1,1) -> Arr(2,1) Error!
     
  3. dimat

    dimat Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    31 июл 2008
    Сообщения:
    516
    Симпатии:
    0
    то есть первый индекс никак не поменять?
     
  4. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    Только последний, либо извращаемся, либо уходим на java + ls2j, либо java полностью. Кажись в ней еще можно так делать.
    Либо меняем архитектуру.
     
  5. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.361
    Симпатии:
    335
    а хэлп почитать?...
    и второе - а зачем менять индекс (первый) и зачем двуразмерные массивы?
    индекс от 0 - вполне нормально, массивы с размерностью более 1-го - это вам в фортран надо ;)
     
  6. dimat

    dimat Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    31 июл 2008
    Сообщения:
    516
    Симпатии:
    0
    Общая задача: Необхимо хранить таблицу данных с возможность добавления новых значений, то есть первый индекс - строка, второй индекс - столбец.
    Вот и подумал что двумерный массив будет подходящим решением, хотя раньше приходилось использовать только одномерные
     
  7. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.113
    Симпатии:
    157
    Таблица. Что мешает остаться при одномерном массиве, каждый элемент которого строка?
    Это конечно изврат на скорую руку:
    Массив - строки
    Каждый элемент тип: содержит колонку + данные.
    Всё)
     
  8. erdi

    erdi Well-Known Member

    Репутация:
    0
    Регистрация:
    20 авг 2008
    Сообщения:
    265
    Симпатии:
    36
    используй list

    Код:
    Type usetype
    param1 As String
    param2 As String
    End Type
    
    Dim arr List As usetype
    Dim row() As Integer
    Dim column() As Integer
    Dim x, y As Integer
    Dim vparam1, vparam2 As String
    
    Redim Preserve row(2) As Integer
    Redim Preserve column(5) As Integer
    
    For x=0 To Ubound(row)
    For y=0 To Ubound(column)
    arr(Cstr(x)+","+Cstr(y)).param1=Cstr(x)
    arr(Cstr(x)+","+Cstr(y)).param2=Cstr(y)
    Next
    Next
    vparam1=arr("2, 1").param1
    vparam2=arr("2, 5").param2
     
  9. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.361
    Симпатии:
    335
    в кастомных типах еще и матрицу баянить... ну, знаете...
    ужеж сделали тип - вот в рамках его и делайте колонки
     
Загрузка...
Похожие Темы - Массив Собственного Типа
  1. Faradei
    Ответов:
    0
    Просмотров:
    380
  2. sashasluva
    Ответов:
    1
    Просмотров:
    219
  3. Shandrik
    Ответов:
    3
    Просмотров:
    465
  4. Вероника Эл
    Ответов:
    5
    Просмотров:
    600
  5. NickProstoNick
    Ответов:
    15
    Просмотров:
    1.094

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