Indhold

# Brug af variable

Her følger en beskrivelse af den grundlæggende brug af variable i LibreOffice Basic.

## Navngivningskonventioner for variabelnavne

Et variabelnavn kan bestå af højst 255 tegn. Det første tegn i et variabelnavn skal være et bogstav i det engelske alfabet A-Z eller a-z. Tal kan også bruges i et variabelnavn, men tegnsætningssymboler og specielle tegn er ikke tilladt, med undtagelse af en understreg ("_"). I LibreOffice Basic skelnes der ikke mellem store og små bogstaver i variabelnavne. Variabelnavne kan indeholde mellemrum, men skal i så fald være omgivet af kantede parenteser.

Eksempler på variabelnavne:

        MyNumber=5      'Korrekt'
        MyNumber5=15    'Korrekt'
        MyNumber_5=20   'Korrekt'
        My Number=20    'Ikke gyldigt, da variable med mellemrum skal omsluttes af firkantede parenteser'
        [My Number]=12  'Korrekt'
        DéjàVu=25       'Ikke gyldigt, da specialtegn ikke er tilladt'
        5MyNumber=12    'Ikke gyldig, da variable ikke må begynde med et tal'
        Number,Mine=12  'Ikke gyldigt, da punkttegn ikke er tilladt'

## Erklæring af variable

I LibreOffice Basic er det ikke nødvendigt at erklære variable eksplicit. En variabelerklæring kan udføres med sætningen Dim. Man kan erklære mere end en variabel ad gangen ved at adskille navnene med et komma. For at definere variabeltypen bruges enten et typeerklæringstegn efter navnet, eller det relevante nøgleord.

Eksempler på variabelerklæringer:

        Dim a$               'Deklarerer variablen "a" som streng'
        Dim a As String      'Deklarerer variablen "a" som en streng (variabeltype String)'
        Dim a$, b As Integer 'Deklarerer en variabel som streng og en anden som heltal'
        Dim c As Boolean     'Deklarerer c som en boolsk variabel som kan være TRUE eller FALSE'

Når man en gang har erklæret en variabel som en bestemt type, kan man ikke erklære variablen under det samme navn igen som en anden type!

Når du erklærer flere variable i en enkelt kodelinje, skal du angive den enkelte variabels type. Hvis en variabels type ikke erklæres udtrykkeligt, vil Basic antage, at variablen er af typen Variant.

      ' Begge variable "a" og "b" er af typen Integer (heltal)
      Dim a As Integer, b As Integer
      ' Variabel "c" er en Variant og "d" er et Heltal
      Dim c, d As Integer
      ' En variabel kan også udtrykkeligt erklæres som en Variant
      Dim e As Variant, f As Double

Typen Variant er en speciel datatype, der kan lagre enhver slags værdi. Få mere at vide ved at se sektionen typen Variant herunder.

### Gennemtvingning af variabelerklæringer

Følgende kommando bruges til at gennemtvinge, at alle variable i et modul skal erklæres:

    Option Explicit

Udtrykket Option Explicit skal være den første linje i modulet, før den første Sub. Generelt er det kun arrays, som behøver at erklæres eksplicit. Alle andre variable erklæres automatisk ifølge typeerklæringstegnet, eller – hvis dette er undladt – som standardtypen Single.

## Variabeltyper

LibreOffice Basic understøtter fire typer af variable:

- Numeriske variable kan indeholde talværdier. Nogle variable bliver brugt til at lagre store eller små tal, og andre bruges til decimaltal eller brøktal.

- Streng-variable indeholder tegnrækker (tekststrenge).

- Booleske variable indeholder enten værdien True eller False (sand eller falsk).

- Object-variable kan lagre objekter af forskellig art.

### Integer

Integer-variable rummer heltal i området fra -32768 til 32767. Hvis man tildeler en decimaltalsværdi til en integer, bliver værdien afrundet til nærmeste heltal. Integer-variable har den fordel frem for andre typer af talvariable, at de er hurtige at regne på. Derfor er de f.eks. velegnede som tællervariable i løkker. En heltalsvariabel kræver kun to bytes hukommelse. Typeerklæringstegnet er "%".

    Dim Variable%
    Dim Variable As Integer

### Long Integer

Long Integer spænder fra -2147483648 til 2147483647. Hvis man tildeler en decimaltals-værdi til en Long Integer (32 bit), bliver værdien afrundet til nærmeste heltal. Long Integers beregnes hurtigt i procedurer og er velegnede til til tæller-variable i løkker med store værdier. En Long Integer kræver fire bytes hukommelse. Typeerklæringstegnet er "&".

    Dim Variable&
    Dim Variable As Long

### Decimalvariable

Decimale variable kan være positive eller negative tal eller nul. Nøjagtigheden er på indtil 29 cifre.

Du kan bruge plus (+) eller minus (-) tegn som fortegn for decimaltal (med eller uden mellemrum).

Hvis en heltalsvariabel tildeles en decimaltalsværdi, vil LibreOffice Basic runde tallet op eller ned.

### Single

Variable af type Single kan antage positive eller negative decimaltals-værdier fra 3,402823 x 10E38 til 1,401298 x 10E-45. Decimal-nøjagtigheden for Single-variable aftager, når den ikke-decimale del af tallet stiger. Single-variable er egnede til matematiske beregninger af gennemsnitlig præcision. Beregninger kræver mere tid end med heltalsvariable (Integer og Long Integer), men er hurtigere end beregninger med Double-variable. En Single-variabel kræver 4 bytes hukommelse. Tegnet til type-erklæring er "!".

    Dim Variable!
    Dim Variable As Single

### Double

Variable af type Double kan antage positive eller negative decimaltals-værdier fra 1,79769313486232 x 10E308 ned til 4,94065645841247 x 10E-324. Den decimale præcision af Double-variable af aftager, når den ikke-decimale del af tallet forøges. Double-variable er egnede til præcise beregninger. Beregninger kræver mere tid end med Single-variable. En Double-variabel kræver 8 byte hukommelse. Typeerklærings-tegnet er "#".

    Dim Variable#
    Dim Variable As Double

### Valutavariable

Valutavariable bliver internt gemt som 64-bit tal (8 Bytes), og bliver vist som en fast decimaltal med 15 ikke-decimalcifre og 4 decimaler. Værdierne spænder fra -922337203685477.5808 til +922337203685477.5807. Valutavariable bliver brugt til at beregne valutaværdier med en høj nøjagtighed. Typeerklæringstegnet er "@".

    Dim Variable@
    Dim Variable As Currency

### Programkonstanter for heltal

Tal kan indkodes i oktal og hexadecimal form.

      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

### Strengvariable

Strengvariable kan indeholde tegnstrenge med op til 2.147.483.648 tegn. Hvert tegn er lagret som den tilsvarende Unicode-værdi. Strengvariable egner sig til teksthåndtering inde i programmer og til midlertidig lagring af kontroltegn op til en maksimal længde på 2 Gbytes. Den krævede hukommelse til lagring af strengvariable afhænger af antallet af tegn i variablen. Type-deklarationstegnet er "$".

I BASICs strengfunktioner har det første tegn i strengen indeks 1.

    Dim Variable$
    Dim Variable As String

### Booleske variable

Booleske variable lagrer kun en af to værdier: True eller False (sand eller falsk). Tallet 0 evaluerer til False, mens enhver anden værdi evaluerer til True.

    Dim Variable As Boolean

### Datovariable

Datovariable kan kun indeholde datoer og klokkeslætsværdier lagret i interne formater. Værdier tildelt til datovariable med DateSerial, DateValue, Timeserial eller Timevalue bliver automatisk konverteret til det interne format. Datovariable bliver konverteret til normale tal ved at bruge funktionen Day, Month, Year eller Hour, Minute, Second. Den interne formatering tillader en sammenligning på dato-/klokkeslætsværdier ved beregning af forskellen mellem to tal. Disse variable kan kun erklæres med nøgleordet Date.

    Dim Variable As Date

### Dato-konstantværdier

Dato-litteraler tillader angivelse af entydige datovariable, som er uafhængige af det aktuelle sprog. Litteraler omgives af hash-tegn#. Mulige formater er:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

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

## Typen Variant

Variable erklæret som Variant kan håndtere enhver datatype. Dette betyder, at den faktiske type defineres under afviklingen som en værdi, der tildeles variablen.

Der er hovedsagelig tre måder at oprette variablen Variant på, som vist herunder:

      Dim varA            ' typen er ikke angivet, derfor er variablen en Variant
      Dim varB As Variant ' Variablen er udtrykkeligt erklæret som en Variant
      varC = "abc"        ' Tidligere uerklærede variable behandles som Variant-variable

Eksemplet herunder bruger funktionen TypeName til at vise, hvordan variablen Variant ændres efter tildeling.

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

En Variant-variabel initialiseres med specialdatatypen Empty. Du kan bruge funktionen IsEmpty til at teste, om en variabel er en Empty Variant (tom variant).

Du kan også bruge nøgleordet Any til at erklære en variabel som en Variant. Any er imidlertid forældet, men er stadig tilgængelig af hensyn til bagud-kompatibilitet.

Argumenter med typen Variant eller Vilkår overført i funktionskald tjekkes ikke for deres typer.

      Dim myVar As Any ' Variablen "myVar" er en Variant

## Initielle værdier for variable

Som hovedregel bliver nyerklærede variable automatisk sat til værdien Null. Bemærk dog følgende:

Numeriske variable bliver automatisk tilskrevet værdien 0 efter erklæring.

Datovariable bliver tilskrevet værdien 0 internt, svarende til at konvertere værdien til "0" med funktionen Day, Month, Year eller Hour, Minute, Second.

Strengvariable bliver tildelt en tom streng ("") ved erklæring.

## Arrays (matricer)

LibreOffice Basic understøtter en- og flerdimensionelle arrays, defineret med en angivet variabeltype. Arrays er egnede til redigering af lister og tabeller i programmer. Individuelle elementer i et array kan adresseres gennem et numerisk indeks.

Arrays skal erklæres med sætningen Dim. Der er flere metoder til at angive indeksområdet af et array:

        Dim Text$(20)       '21 elementer nummereret fra 0 til 20'
        Dim Text$(5,4)      '30 elementer (en matrice af 6 x 5 elementer)'
        Dim Text$(5 To 25)  '21 elementer nummereret fra 5 til 25'
        Dim Text$(-15 To 5) '21 elementer (inkl. 0), nummereret fra -15 til 5'

Indeksområdet kan omfatte positive såvel som negative tal.

## Konstanter

Konstanter har en fast værdi. De bliver kun defineret en gang i programmet og kan ikke blive redefineret senere:

    Const ConstName=Expression

Relaterede emner

Basic-konstanter

sætningen Dim