Оператор 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


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

Параметри:

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: низова променлива, съдържаща най-много 64000 знаква в код ASCII.

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

Моля, подкрепете ни!