Modul
Indhold
Indholdsfortegnelse 🔎︎

# 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 gyldig; variabel med mellemrum skal være omgivet af kantede parenteser
          [My Number]=12
| Korrekt
          DéjàVu=25
| Ikke gyldig: Specialtegn, herunder danske bogstaver, er ikke tilladte
          5MyNumber=12
| Ikke gyldig: Variabel kan ikke begynde med et tal
          Number,Mine=12
| Ikke gyldig: Tegnsætning er ikke 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 på en gang ved at adskille navnene med et komma. For at definere variabeltypen bruges enten et typeerklæringstegn efter navnet eller det koresponderende nøgleord.

Eksempler på variabelerklæringer:

          Dim a$
| Erklærer variablen "a" som en streng
          Dim a As String
| Erklærer variablen "a" som en streng
          Dim a$, b As Integer
| Erklærer en variabel som en streng og en anden som et heltal
          Dim c As Boolean
| Erklærer c som en boolesk variabel, der kan være True eller False (sand eller falsk)

Hvis man har brugt typeerklæringstegnet i erklæringen af en variabel, skal det også bruges ved alle henvisninger til variablen. Således er følgende sekvens ugyldig:

          Dim a$
| Erklærer "a" som en streng
          a="TestString"
| Typeerklæring mangler: "a$="

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!

### Gennemtvingning af variabelerklæringer

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

    Option Explicit

Sætningen Option Explicit skal være den første linje i modulet, før den første Sub. Generelt skal kun arrays erklæres eksplicit. Alle andre variable erklæres automatisk ifølge typeerklæringstegnet, eller - hvis dette er undladt - som standardtypen Variant.

## Variabeltyper

LibreOffice Basic understøtter fire typer af variable:

- Numeriskevariable kan indeholde talværdier. Nogle variable bliver brugt til at lagre store eller små tal, og andre bruges til flydende-komma 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 flydende-kommavæ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 flydende-kommaværdi til en Long Integer (32 bit), bliver værdien afrundet til nærmeste heltal. Long Integers er stort set lige så hurtige at regne på som Integers. 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 typen Single kan antage positive og negative værdier fra 3,402823 x 10E38 til 1,401298 x 10E-45. Single-variable er kommatal i hvilke decimaldelens nøjagtighed falder i takt med, at den ikke-decimale del af tallet forøges. Single-variable er velegnede til matematiske beregninger af moderat nøjagtighed. Beregninger kræver mere tid end for Integer-variable, men er hurtigere end beregninger med Double-variable. En Single kræver 4 bytes hukommelse. Typeerklæringstegnet er "!".

    Dim Variable!
    Dim Variable As Single

### Double

Double-variable kan antage positive eller negative værdier fra 1,79769313486232 x 10E308 til 4,94065645841247 x 10E-324. Double-variable er kommatal i hvilke decimaldelens nøjagtighed falder i takt med, at den ikke-decimale del forøges. Doubles er velegnede til præcise beregninger. Beregninger kræver mere tid end for Single-variable. Double-variable kræver 8 bytes hukommelse. Typeerklæringstegnet 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

### Strengvariable

Strengvariable (variable af typen String) kan indeholde tegnstrenge med op til 65.535 tegn. Hvert tegn bliver gemt som den tilsvarende Unicode-værdi. Strengvariable er velegnede til programmatisk behandling af tekst og som midlertidigt lager for vilkårlige tegn der ikke kan udskrives, op til en maksimumlængde på 64 kBytes. Hukommelsen, der er nødvendig for lagring af strengvariable, afhænger af antallet af tegn indeholdt i variablen. Typeerklæringstegnet er "$".

    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-/klokkesætsværdier ved beregning af forskellen mellem to tal. Disse variable kan kun erklæres med nøgleordet Date.

    Dim Variable As Date

## 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

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 matrix af 6 X 5 elementer)
          Dim Text$(5 To 25)
| 21 elementer nummereret fra 5 til 25
          Dim Text$(-15 To 5)
| 21 elementer (inklusiv 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