Съдържание

# Оператор ReDim

Декларира или предефинира променливи или масиви.

### Синтаксис:

    ReDim [Preserve] variable [(start To end)] [As type-name][, variable2 [(start To end)] [As type-name][,...]]

Ако желаете, добавете ключовата дума Preserve, за да запазите съдържанието на преоразмерявания масив. ReDim може да се използва само в подпрограми.

### Параметри:

variable: име на променилива или масив.

typename: ключова дума, определяща типа данни на променливата.

Byte: променлива от тип Byte (0 – 255)

Boolean: булева променлива (True, False)

Currency: променлива за валута (с 4 дробни разреда)

Date: променлива за дата

Double: променлива с плаваща запетая с двойна точност (1,79769313486232 × 10E308 – 4,94065645841247 × 10Е-324)

Integer: целочислена променлива (-32768…32767)

Long: дълга целочислена променлива (-2147483648…2147483647)

Object: обектна променлива (Бележка: тази променлива впоследствие може да бъде дефинирана само със Set!)

Single: променлива с плаваща запетая с единична точност (3,402823.10^38…1,401298.10^-45).

String: низова променлива, съдържаща най-много 2 147 483 647 знака.

Variant: вариантна променлива (може да съдържа всякакъв тип данни, зададен чрез дефиниция). Ако не е зададено име на тип, променливите автоматично се дефинират като тип Variant, освен ако е използван оператор от рода на DefBool и DefVar.

object: обект по спецификацията Universal Network Object (UNO) или екземпляр на ClassModule.

char: специален знак, определящ типа данни на променливата.

В LibreOffice Basic не е необходимо да обявявате променливите явно. Масивите обаче трябва да бъдат обявени преди използването им. Можете да обявите променлива с оператора Dim, използвайки запетаи (,), за да разделите няколко декларации. За да декларирате типа на променлива, въведете знак за деклариране на тип след името или използвайте съответната ключова дума за име на тип.

Declaration character | Variable type name
--- | ---
% | Integer
& | Long
! | Single
# | Double
$ | String
@ | Currency

array: декларация на масив.

start, end: числови стойности или константи, задаващи броя елементи ((end – start) + 1) и диапазона за индексиране.

start и end може да са числови изрази, ако ReDim се прилага на ниво процедура.

LibreOffice Basic поддържа едномерни и многомерни масиви, дефинирани като специален вид променливи. Масивите са подходящи за работа със списъци или таблици в програмите. Предимството им е, че отделните елементи се адресират чрез индекси, които могат да бъдат задавани като числови изрази или променливи.

Масивите се обявяват с оператора Dim. Има два начина за задаване на диапазона за индексиране:

      Dim text(20) As String ' 21 елемента с номера от 0 до 20
      Dim value(5 to 25) As Integer ' 21 стойности с номера от 5 до 25
      Dim amount(-15 to 5) As Currency ' 21 количества с номера от -15 до 5 (включително 0)
      REM Двуизмерна матрица от данни
      Dim table$(20, 2) ' 63 елемента; от 0 до 20 на ниво 1, от 0 до 20 на ниво 2 и от 0 до 20 на ниво 3.

Можете да декларирате масив като динамичен, ако измеренията му са зададени с оператора ReDim в подпрограмата, съдържаща масива. По правило размерността на масива се декларира само веднъж и не можете да я променяте. В подпрограма можете да декларирате масив с ReDim. Размерностите се задават само с числови изрази. По този начин полетата винаги са с минималния необходим размер.

## Пример:

    Sub ExampleRedim
        Dim iVar() As Integer, iCount As Byte
        ReDim iVar(5) As Integer
        For iCount = 1 To 5
            iVar(iCount) = iCount
        Next iCount
        ReDim iVar(10) As Integer
        For iCount = 1 To 10
            iVar(iCount) = iCount
        Next iCount
    End Sub