Använda variabler

I detta avsnitt finns grundläggande information om variabler i LibreOffice Basic.

Namnkonventioner för variabler

Ett variabelnamn får vara högst 255 tecken långt. Det första tecknet i ett variabelnamn måste vara en bokstav mellan A och Z eller a och z. Du kan använda siffror i ett variabelnamn, men inte skiljetecken eller specialtecken (med undantag för understryckningstecken ("_"). Du kan inte använda å, ä eller ö i ett variabelnamn. I LibreOffice Basic är variabelnamn inte skiftlägeskänsliga. Variabelnamn kan innehålla blanksteg men måste i så fall omges av hakparenteser.

Exempel på variabelnamn:


    MyNumber=5      'Correct'
    MyNumber5=15    'Correct'
    MyNumber_5=20   'Correct'
    My Number=20    'Not valid, variable with space must be enclosed in square brackets'
    [My Number]=12  'Correct'
    DéjàVu=25       'Not valid, special characters are not allowed'
    5MyNumber=12    'Not valid, variable may not begin with a number'
    Number,Mine=12  'Not valid, punctuation marks are not allowed'

Deklarera variabler

I LibreOffice Basic behöver du inte deklarera variabler explicit. En variabeldeklaration görs med uttrycket Dim. Du kan deklarera fler än en variabel åt gången genom att avgränsa namnen med ett kommatecken. Om du vill definiera variabelns typ använder du ett typdeklarationstecken efter namnet, eller motsvarande nyckelord.

Exempel på variabeldeklarationer:


    Dim a$               'Declares the variable "a" as a String'
    Dim a As String      'Declares the variable "a" as a String'
    Dim a$, b As Integer 'Declares one variable as a String and one as an Integer'
    Dim c As Boolean     'Declares c as a Boolean variable that can be TRUE or FALSE'
warning

När du har deklarerat en variabels typ kan du inte deklarera en variabel igen med samma namn fast av en annan datatyp.


When you declare multiple variables in a single line of code you need to specify the type of each variable. If the type of a variable is not explicitly specified, then Basic will assume that the variable is of the Variant type.


  ' Both variables "a" and "b" are of the Integer type
  Dim a As Integer, b As Integer
  ' Variable "c" is a Variant and "d" is an Integer
  Dim c, d As Integer
  ' A variable can also be explicitly declared as a Variant
  Dim e As Variant, f As Double
note

The Variant type is a special data type that can store any kind of value. To learn more, refer to the section The Variant type below.


Kräva variabeldeklationer

Du kan använda följande instruktion för att kräva explicita variabeldeklarationer:


Option Explicit

Instruktionen Option Explicit måste stå på den första raden i modulen, innan den första SUB-proceduren. Om instruktionen saknas måste endast matrisvariabler deklareras explicit. Vid implicit variabeldeklaration deklareras alla andra variabler med ett typdeklationstecken, eller (om typdeklationstecken saknas) som standardtypen Single.

Variabeltyper

LibreOffice Basic har stöd för fyra variabelklasser:

Variabeltypen Integer

En heltalsvariabel kan ha ett värde mellan -32768 och 32767. Om du tilldelar en heltalsvariabel av typen Long ett flyttalsvärde, rundas talet av till närmaste heltalsvärde. Beräkningar med heltalsvariabler av typen Long är mycket snabba, och heltalsvariabler används ofta som räknare i repetitiva satser. En heltalsvariabel tar upp två byte minne. Typdeklarationstecknet för en heltalsvariabel är "%".


Dim Variable%
Dim Variable As Integer

Variabeltypen Long

En variabel av den här typen kan ha ett värde från -2147483648 till 2147483647. Om du tilldelar en heltalsvariabel ett flyttalsvärde, rundas talet av till närmaste heltalsvärde. Beräkningar med heltalsvariabler är mycket snabba, och heltalsvariabler används ofta som räknare i repetitiva satser. En variabel av typen Long tar upp fyra byte minne. Typdeklarationstecknet är "&".


Dim Variable&
Dim Variable As Long

Decimaltalsvariabler

Decimaltalsvariabler kan ta positiva eller negativa tal eller noll. Precisionen är upp till 29 siffror.

Du kan använda plustecken (+) eller minustecken (-) som prefix före decimaltal (med eller utan blanksteg).

Om ett decimaltal tilldelas till en heltalsvariabel, avrundar LibreOffice Basic siffran uppåt eller nedåt.

Variabeltypen Single

Single variables can take positive or negative values ranging from 3.402823 x 10E38 to 1.401298 x 10E-45. Single variables are floating-point variables, in which the decimal precision decreases as the non-decimal part of the number increases. Single variables are suitable for mathematical calculations of average precision. Calculations require more time than for Integer variables, but are faster than calculations with Double variables. A Single variable requires 4 bytes of memory. The type-declaration character is "!".


Dim Variable!
Dim Variable As Single

Variabeltypen Double

Double variables can take positive or negative values ranging from 1.79769313486232 x 10E308 to 4.94065645841247 x 10E-324. Double variables are floating-point variables, in which the decimal precision decreases as the non-decimal part of the number increases. Double variables are suitable for precise calculations. Calculations require more time than for Single variables. A Double variable requires 8 bytes of memory. The type-declaration character is "#".


Dim Variable#
Dim Variable As Double

Variabeltypen Currency

Valutavariabler lagras internt som 64-bitarsvärden (8 byte) och visas som ett fast decimaltal med 15 heltalsplatser och 4 decimaler. Värdeintervallet är -922337203685477,5808 till +922337203685477,5807. Valutavariabler används för att beräkna finansiella värden med hög precision. Typdeklarationstecknet är "@".


Dim Variable@
Dim Variable As Currency

Literals for integers

Numbers can be encoded using octal and hexadecimal forms.


  xi = &o13 '    8 + 3
  ci = &h65 ' 6*16 + 5
  MAX_Integer =  &o77777 '  32767 = &h7FFF
  MIN_Integer = &o100000 ' -32768 = &h8000
  MAX_Long = &h7fffffff '  2147483647 = &o17777777777
  MIN_Long = &h80000000 ' -2147483648 = &o20000000000

Variabeltypen String

String variables can hold character strings with up to 2,147,483,648 characters. Each character is stored as the corresponding Unicode value. String variables are suitable for word processing within programs and for temporary storage of any non-printable character up to a maximum length of 2 Gbytes. The memory required for storing string variables depends on the number of characters in the variable. The type-declaration character is "$".

tip

In BASIC String functions, the first character of the string has index 1.



Dim Variable$
Dim Variable As String

Variabeltypen Boolean

Logiska variabler av typen Boolean kan bara lagra ett av två värden: TRUE eller FALSE. Talet 0 returnerar FALSE, medan alla andra värden returnerar TRUE.


Dim Variable As Boolean

Variabeltypen Date

Datumvariabler kan endast innehålla tids- och datumvärden som lagras i ett internt numeriskt format. Värden som tilldelas en variabel av typen Date med funktionerna Dateserial, Datevalue, Timeserial eller Timevalue konverteras automatiskt till det interna formatet. Datumvariabler konverteras till vanliga tal med någon av funktionerna Day, Month eller Year, respektive Hour, Minute eller Second. Det interna formatet används för att två tids- eller datumvärden ska kunna jämföras. En datumvariabel kan endast deklareras med nyckelordet Date.


Dim Variable As Date

Literals for Dates

Date literals allow to specify unambiguous date variables that are independent from the current language. Literals are enclosed between hash signs #. Possible formats are:


  start_date = #12/30/1899# ' = 1
  dob = #2010-09-28#

The Variant type

Variables declared as Variant can handle any data type. This means that the actual data type is defined during runtime as a value is assigned to the variable.

There are three main ways to create a Variant variable, as shown below:


  Dim varA            ' The type is not specified, hence the variable is a Variant
  Dim varB as Variant ' The variable is explicitly declared as a Variant
  varC = "abc"        ' Previously undeclared variables are treated as Variants

The example below uses the TypeName function to show how the type of a Variant variable changes upon assignment.


  Dim myVar As Variant
  MsgBox TypeName(myVar) ' Empty
  myVar = "Hello!"
  MsgBox TypeName(myVar) ' String
  myVar = 10
  MsgBox TypeName(myVar) ' Integer
note

A Variant variable is initialized with the Empty special data type. You can use the IsEmpty function to test if a variable is an Empty Variant.


You can also use the keyword Any to declare a variable as a Variant. However, Any is deprecated and is available for backward compatibility.

warning

Arguments with type Variant or Any passed in function calls are not checked for their types.



  Dim myVar As Any ' Variable "myVar" is a Variant

Initiala variabelvärden

När en variabel har deklarerats antar den automatiskt värdet "Null". Observera följande konventioner:

Numeriska variabler får automatiskt värdet "0" när de har deklarerats.

Datumvariabler får det interna värdet 0, vilket motsvarar konvertering av "0" med funktionerna Day, Month och Year respektive Hour, Minute och Second.

Strängvariabler får värdet av en tom sträng ("") när de deklareras.

Matriser

LibreOffice Basic stöder en- eller flerdimensionella matriser som definieras av en angiven variabeltyp. Matriser används till exempel för att redigera listor och tabeller i program. Enskilda matriselement kan anropas med hjälp av ett numeriskt index.

Matriser måste deklareras med uttrycket Dim. Det finns flera olika sätt att definiera en matris dimensioner:


    Dim Text$(20)       '21 elements numbered from 0 to 20'
    Dim Text$(5,4)      '30 elements (a matrix of 6 x 5 elements)'
    Dim Text$(5 To 25)  '21 elements numbered from 5 to 25'
    Dim Text$(-15 To 5) '21 elements (including 0), numbered from -15 to 5'

Elementen i en matris kan ha positiva eller negativa index.

Konstanter

Konstanter har ett fast värde. De kan endast definieras på ett ställe i programmet och kan inte omdefinieras senare:


Const ConstName=Expression

Stötta oss!