Innhald

# Bruka variablar

I dette avsnittet finn du grunnleggjande informasjon om bruk av variablar i LibreOffice Basic.

## Namnereglar for variabelnamn

Eit variabelnamn kan innehalda maksimalt 256 teikn. Det første teiknet i eit variabelnamn må vera ein bokstav i det engelske alfabetet A-Z eller a-z. Dei andre teikna kan vera ein bokstav, eit tal eller understrek («_»). Ingen andre teikn er tillatne. LibreOffice Basic skil ikkje mellom store og små bokstavar i variabelnamna. Eit variabelnamn kan også innehalda mellomrom, men må då skrivast mellom hakeparentesar.

Eksempel på variabelnamn:

        MyNumber=5      'Korrekt'
        MyNumber5=15    'Korrekt'
        MyNumber_5=20   'Korrekt'
        My Number=20    'Ugyldig. Variablar med mellomrom må omsluttast av hakeparentesar.'
        [My Number]=12  'Korrekt'
        DéjàVu=25       'Ugyldig. Spesialteikn er ikkje tillatne'
        5MyNumber=12    'Ugyldig. Variabelnamn kan ikkje byrja med eit tal.'
        Number,Mine=12  'Ugyldig. Skiljeteikn er ikkje tillatne'

## Deklarera variablar

I LibreOffice Basic treng du ikkje definera variablane eintydig. Ein variabel kan definerast med uttrykket Dim. Du kan også definera fleire variablar samtidig ved å skilja namna med komma. For å definera ein variabeltype, brukar du anten eit typedeklareringsteikn etter namnet eller det tilsvarande nøkkelordet.

Eksempel på variabeldeklarasjonar:

        Dim a$               'Deklarerer variabelen «a» som ein streng'
        Dim a As String      'Deklarerer variabelen «a» som ein streng'
        Dim a$, b As Integer 'Deklarerer éin variabel som streng, den andre som heiltal'
        Dim c As Boolean     'Deklarerer c som logisk variabel som kan vera TRUE eller FALSE'

Når du har deklarert ein variabel som ein bestemt type, kan du ikkje deklarera ein annan variabel med det same namnet som ein annan type.

Når du deklarerer fleire variablar på ei og same linja, må du spesifisera type for kvar variabel. Gjer du ikkje det, vil BASIC gå ut frå at variabelen er av typen Variant.

      ' Begge variablane «a» og «b» er av typen Integer (heiltal)
      Dim a As Integer, b As Integer
      ' Variabelen «c» er ein «Variant» og «d» er «Integer» (heiltal)
      Dim c, d As Integer
      ' Ein variabel kan også eksplisitt verta deklarert som «Variant»
      Dim e As Variant, f As Double

Variant-typen er ein spesiell datatype som kan innehalda kva verdi som helst. Du kan sjå meir om dette i bolken Variant-typen nedanfor.

### Tving variabeldeklarasjonar

For tvingande deklarasjon av ein variabel, bruk denne kommandoen:

    Option Explicit

Uttrykket Option Explicit må vera på den første linja i modulen, framføre den første SUB-prosedyren. Normalt skal berre tabellar («array») deklarerast spesielt. Alle andre variablar vert deklarerte med typedeklarasjonsteiknet eller, dersom dette er sløyfa, som standardtypen Single.

## Variabeltypar

LibreOffice Basic har støtte for fire variabelklassar:

- Numeriske variablar inneheld talverdiar. Variablane vert brukte til å lagra store eller små tal, desimaltal eller brøk.

- Streng-variablane inneheld teiknstrengar (tekst).

- Logiske variablar kan ha verdiane SANN (TRUE) eller USANN (FALSE).

- Object-variablane kan lagra ulike typar objekt som t.d. tabellar og dokument i eit dokument.

### Heiltalsvariablar (Integer)

Ein heiltalsvariabel kan ha ei verdi mellom -32 768 og 32 767. Dersom du legg eit desimaltal inn i ein heiltalsvariabel, vert talet avrunda til næraste heiltal. Ein heiltalsvariabel brukar berre to byte i minnet. Difor går utrekningane svært raskt. Denne variabeltypen passar såleis bra som teljarvariablar i løkker. Typedeklarasjonsteiknet er «%».

    Dim Variable%
    Dim Variable As Integer

### Variabeltypen Long

Variabeltypen Long Integer kan ha ein verdi frå -2.147.483.648 til 2.147.483.647. Viss eit desimaltal vert lagt inn i ein Long variabel (32 bit), vert verdien avrunda til næraste heiltal. Eit Long heiltal er nokså raskt å arbeida med og kan brukast mellom anna som teljar i sløyfer (loop). Eit Long heiltal krev fire byte i minnet. Typedeklarasjonsteiknet er «&».

    Dim Variable&
    Dim Variable As Long

### Desimalvariablar

Desimalvariablane kan ha positive eller negative tal og null. Presisjonen er opp til 29 siffer.

Du kan bruka pluss (+) eller minus (-) framføre desimaltal, med eller utan mellomrom.

Viss eit desimaltal vert lagt til ein heiltalsvariabel, vil LibreOffice Basic runda av talet opp eller ned.

### Variabeltypen Single

Enkle variablar kan innehalda negative eller positive verdiar frå 3,402823 · 10E38 til 1,401298 · 10E-45. Enkle variablar er desimaltalsvariablar der desimalpresisjonen minkar når heiltalsdelen av talet aukar. Enkle variablar er eigna for matematiske utrekningar med gjennomsnittleg presisjon. Utrekningane tek meir tid enn for utrekningar med heiltal, men er raskare enn utrekningar med doble variablar. Ein enkel variabel krev 4 byte minne. Typedeklarasjonsteiknet er "!".

    Dim Variable!
    Dim Variable As Single

### Variabeltypen Double

Doble variablar kan innehalda negative eller positive verdiar frå 1,79769313486232 · 10E308 til 4,94065645841247 · 10E-324. Doble variablar er desimaltalsvariablar der desimalpresisjonen minkar når heiltalsdelen av talet aukar. Doble variablar er eigna for nøyaktige matematiske utrekningar. Utrekningane tek meir tid enn for utrekningar med enkle variablar. Ein dobbel variabel krev 8 byte minne. Typedeklarasjonsteiknet er "#".

    Dim Variable#
    Dim Variable As Double

### Valutavariablane

Valutavariablane vert lagra internt som 64-bits tal (8 byte) og vert viste som eit fast desimaltal med 15 heiltalsplassar og 4 desimalar. Verdiane kan vere frå -922.337.203.685.477,5808 til +922.337.203.685.477,5807. Valutavariablane vert brukte til å rekne ut valutaverdiar med høg presisjon. Typedeklarasjonsteiknet er «@».

    Dim Variable@
    Dim Variable As Currency

### Direkteverdi for heiltal

Tal kan kodast både heksadesimalt og oktalt.

      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

### Strengvariablar

Strengvariablane er tekststrengar med opp til 2 147 483 648 teikn. Kvart teikn vert lagra som Unicode-verdi. Strengvariablane vert brukte for å handsama tekst i program og for mellomlagring av ikkje-skrivbare teikn opp til ei maksimallengd på 2 Gbyte. Kor mykje minneplass ein streng brukar, er avhengig av kor mange teikn strengen inneheld. Typedeklarasjonsteiknet er «$».

I strengfunksjonar i BASIC har det første teiknet i strengen indeks 1.

    Dim Variable$
    Dim Variable As String

### Logiske variablar (av type Boolean)

Logiske variablar kan innehalda ein av to verdiar: SANN (TRUE) og USANN (FALSE). Talet 0 representerer USANN, alle andre verdiar gjev SANN.

    Dim Variable As Boolean

### Datovariablar (av type Date)

Datovariablar kan berre innehalda verdiar for datoar og klokkeslett. Verdiane vert lagra i eit internt format. Verdiar som er tilordna datovariablar med Dateserial, Datevalue, Timeserial eller Timevalue vert automatisk konverterte til det interne formatet. Datovariablane kan konverterast til vanlege tal med funksjonane Dag, Månad, År eller Time, Minutt, Sekund. Det interne datoformatet vert brukt for å kunna rekna ut skilnaden mellom to datoar og/eller klokkeslett. Datovariablane kan berre deklarerast med nøkkelordet Date.

    Dim Variable As Date

### Dato-literalar

Datolitteralar gjer det mogleg å spesifisera eintydige datovariablar som er uavhengige av det gjeldande språket. Literalar er omgjevne av nummerteikn (hash-teikn) #.

- #yyyy-mm-dd#

- #mm/dd/yyyy#

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

## Variant-typen

Variablar som er deklarerte som Variant kan handsama alle typar data. Dette betyr at den aktuelle datatypen vert definert under køyringa når variabelen vert tilordna ein verdi.

Ein Variant-variabel kan opprettast på tre måtar:

      Dim varA            ' Typen er ikkje spesifisert, difor er variabelen ein «Variant».
      Dim varB as Variant ' Variabelen er eksplisitt deklarert som ein «Variant»
      varC = "abc"        ' Variablar som ikkje er deklarerte tidlegare, vert handsama som «Variant»

Eksempla nedanfor brukar TypeName-funksjonen for å visa korleis variabelen av typen Variant endrar seg med ulike tildelingar.

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

Ein variabel av typen Variant vert initialisert med spesialtypen Empty. Du kan bruka funksjonen IsEmpty sjå om ein variabel er av typen Empty Variant.

Du kan bruka nøkkelordet Any for å deklarera ein variabel som Variant. Any er eigentleg utfasa og er med berre for å vera bakoverkompatibel.

Det vert ikkje kontrollert kva typar argument av typen Variant og Any er når dei vert brukte i oppkall av funksjonar.

      Dim myVar As Any ' Variabelen «myVar» er ein Variant

## Initiale variabelverdiar

Når ein variabel vert deklarert, vil verdien automatisk verta sett til null. Merk likevel:

Numeriske variablar får automatisk verdien «0» når dei vert deklarerte.

Datovariablar får den interne verdien 0 som svarar til konvertering av "0" med funksjonane Dag, Månad og År eller Time, Minutt og Sekund.

Strengvariablar får verdien av ein tom streng ("") når dei vert deklarerte.

## Array (tabellar)

LibreOffice Basic kan arbeida med ein- og fleirdimensjonale tabellar (array) som vert definerte med ein spesifisert variabeltype. Tabellane er nyttige å bruka for å redigera lister og tabellar i program. Kvart element i ein tabell kan adresserast via ein numerisk indeks.

Array må definerast med uttrykket Dim. Det finst fleire måtar å definera indeksområdet for ein tabell på:

        Dim Text$(20)       '21 element nummerert frå 0 til 20'
        Dim Text$(5,4)      '30 element (ei matrise med 6 × 5 element)'
        Dim Text$(5 To 25)  '21 element nummererte frå 5 til 25'
        Dim Text$(-15 To 5) '21 element (medrekna 0), nummerert frå -15 til 5'

Indeksområdet kan innehalda både positive og negative tal.

## Konstantar

Konstantane har ein fast verdi. Dei kan definerast berre ein gong i programmet og verdien kan ikkje endrast seinare.

    Const ConstName=Expression

Liknande emne

Basic-konstantar

Dim-uttrykkett