Страница 1 из 1

массив пользовательских типов в openoffice

Добавлено: 28 апр 2009, 10:29
v5v5
Как реализовать массив пользовательских типов в openoffice?

Я делал так

Type MyType
Param0@
Param1@
Param2@
Param3@
End Type

Dim Massiv() As MyType

Но по ходу программы не работает

ReDim Massiv(0 To 9)

Как бы это заставить работать?
Если при определениии массива MyType заменить на Integer, то все нормально

Re: массив пользовательских типов в openoffice

Добавлено: 28 апр 2009, 19:43
Naeel Maqsudov
В MSOffice нормально работает...
А какое сообщение об ошибке выдает?
Может в нём так прямо и написано, что нельзя?

Re: массив пользовательских типов в openoffice

Добавлено: 29 апр 2009, 10:28
v5v5
Вот примерно такой же пример:

Код: Выделить всё

REM  *****  BASIC  *****
Option Explicit

Type MyType
  Param0#
  Param1#
  Param2#
  Param3#
End Type

Dim Massiv() As MyType

Sub Main
  Dim oSheets, oSheet
  Dim i%

  oSheets = ThisComponent.Sheets
  oSheet = oSheets.getByIndex(0)

  ReDim Massiv(0 To 9) As MyType
  
  For i% = 0 To 9
    Massiv(i%).Param0# = oSheet.getCellByPosition(0, i%).getValue()
    Massiv(i%).Param1# = oSheet.getCellByPosition(1, i%).getValue()
    Massiv(i%).Param2# = oSheet.getCellByPosition(2, i%).getValue()
    Massiv(i%).Param3# = oSheet.getCellByPosition(3, i%).getValue()
  Next i%

End Sub
При отладке в строке

ReDim Massiv(0 To 9) As MyType

Сообщение об ошибке

Inadmissible value or data type. Index out of defined range.

Выходит нельзя в динамических массивах использовать пользовательские типы?! Я об этом ничего не нашел.

Все это в Calc (OpenOffice). В MsOffice я не пробовал.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Отвечаю сам себе

строку

ReDim Massiv(0 To 9) As MyType

надо заменить на

ReDim Preserve Massiv(0 To 9) As MyType

Это работает как надо. Вот зесь нашел

http://www.oooforum.org/forum/viewtopic.phtml?t=64888