Съдържание

# Оператор Dim

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

Ако променливите са разделени със запетаи – например Dim v1, v2, v3 As String, – първите се дефинират като променливи от тип Variant. Знак за нов ред или двоеточие (:) помага за разделяне на дефинициите на променливи.

      Dim text As String
      Dim pv As com.sun.star.beans.PropertyValue, d As Date
      Dim Units as Integer : Dim EULER As Double

Dim декларира локални променливи в подпрограми. Глобални променливи се декларират с операторите Global, Public или Private.

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

    Dim variable [(start To end)] [As typename][, variable2[char] [(start To end)] [,...]]

Операцията New не е задължителна, когато се задава Option Compatible.

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

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 ExampleDim1
    Dim sVar As String
    Dim iVar As Integer
        sVar = "Office"
    End Sub

    Sub ExampleDim2
      ' Двуизмерна матрица от данни
        Dim stext(20,2) As String
      Const sDim Аs String = " Размерност:"
      For i = 0 To 20
        For ii = 0 To 2
            stext(i,ii) = str(i) & sDim & str(ii)
        Next ii
      Next i
      For i = 0 To 20
        For ii = 0 To 2
            MsgBox stext(i,ii)
        Next ii
      Next i
    End Sub

Теми, свързани с показаната

Операция New