Bruke prosedyrer, funksjoner og egenskaper

Det fĂžlgende beskriver den grunnleggende bruken av prosedyrer, funksjoner og egenskaper i LibreOffice Basic.

note

NÄr du oppretter en ny modul, setter LibreOffice Basic automatisk inn en Sub kalt "Main". Dette standardnavnet har ingenting Ä gjÞre med rekkefÞlgen eller startpunktet for et LibreOffice Basic-prosjekt. Du kan ogsÄ trygt gi nytt navn til denne Subrutinen.


note

Noen begrensninger gjelder for navnene pÄ dine offentlige variabler, subrutiner, funksjoner og egenskaper. Du kan ikke bruke samme navn som en av modulene i samme bibliotek.


Prosedyrer (Subrutiner) funksjoner (Funksjon) og egenskaper (Egenskap) hjelper deg med Ă„ opprettholde en strukturert oversikt ved Ă„ dele et program i logiske deler.

En fordel med prosedyrer, funksjoner og egenskaper er at nÄr du har utviklet en programkode som inneholder oppgavekomponenter, kan du bruke denne koden i et annet prosjekt.

OverfĂžring av variabler til prosedyrer, funksjoner eller egenskaper

Variabler kan overfÞres til bÄde prosedyrer, funksjoner eller egenskaper. Sub Funksjonen eller Egenskap mÄ deklareres for Ä forvente parametere:


  Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
      ' din kode finner sted her
  End Sub

Sub anropes ved Ă„ bruke fĂžlgende syntaks:


  [Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Parametrene som sendes til en Sub mÄ passe til de som er spesifisert i Sub-erklÊringen.

Den samme prosessen gjelder for en Funksjon. I tillegg returnerer funksjoner alltid et funksjonsresultat. Resultatet av en funksjon defineres ved Ă„ tilordne returverdien til funksjonsnavnet:


  Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
      ' din kode finner sted her
      FunctionName=Result
  End Function

Funksjonen kalles ved hjelp av fĂžlgende syntaks:


  Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Egenskaper kombinerer syntaksen til prosedyrer og funksjoner. En Egenskap krever vanligvis opptil Ă©n parameter.


  Private _IsApproved As TYPENAME
  Property Get IsApproved As TYPENAME
      ' din kode finner sted her
      IsApproved = some_computation
  End Property
  Property Let IsApproved(value As TYPENAME)
      ' din kode finner sted her
      _IsApproved = computed_value
  End Property

Egenskapen kalles ved hjelp av fĂžlgende syntaks:


  var = IsApproved
  IsApproved = some_value
tip

Du kan ogsÄ bruke det fullstendige navnet til Ä kalle en prosedyre, funksjon eller egenskap:
[Call] Library.Module.Macro(), der Call er valgfritt .
For Ă„ kalle opp Autotekst-makroen fra Gimmicks-biblioteket, bruk fĂžlgende kommando:
Gimmicks.AutoText.Main()


Å overfþre variabler som verdi eller referanse

Parametre kan overfÞres til en prosedyre, en funksjon eller en egenskap enten ved referanse eller ved verdi. Med mindre annet er spesifisert, sendes en parameter alltid ved referanse. Det betyr at en Sub, en Funksjon eller en Egenskap fÄr parameteren og kan lese og endre verdien.

Hvis du vil sende en parameter etter verdi, sett inn nÞkkelordet ByVal foran parameteren nÄr du kaller en Sub, en Funksjon eller en Egenskap, for eksempel:


  Function ReadOnlyParms(ByVal p2, ByVal p2)
      ' din kode finner sted her
  End Function
  result = ReadOnlyParms(parm1, parm2)

I dette tilfellet vil ikke det opprinnelige innholdet til parameteren bli endret av Funksjonen siden den kun fÄr verdien og ikke selve parameteren.

Definering av valgfrie parametre

Funksjoner, prosedyrer eller egenskaper kan defineres med valgfrie parametere, for eksempel:


  Sub Rounding(number, Optional decimals, Optional format)
      ' din kode finner sted her
  End Sub

Posisjonelle eller sĂžkeord-argumenter

NĂ„r du kaller en funksjon eller en subrutine, kan du sende argumentene ved posisjon eller navn. Å sende etter posisjon betyr bare Ă„ liste argumentene i den rekkefĂžlgen parametrene er definert i funksjonen eller subrutinen. Ved Ă„ sende etter navn mĂ„ du prefiksere argumentet med navnet pĂ„ den tilsvarende parameteren etterfulgt av et kolon og et likhetstegn (:=). SĂžkeordargumenter kan vises i hvilken som helst rekkefĂžlge. Se Basic Replace()-funksjonen for slike eksempler.

NĂ„r du trenger Ă„ sende fĂŠrre parametere, bruk sĂžkeordargumenter. Sending av verdier for fĂŠrre parametere etter posisjon krever Ă„ angi verdier for alle parametere, valgfrie eller ikke. Dette sikrer at verdiene er i riktig posisjon. Hvis du sender parameterne ved navn - ved Ă„ bruke nĂžkkelordargumenter - kan du utelate alle andre mellomargumenter.

VariabelomrÄde

En variabel definert innenfor en Sub, en Funksjon eller en Egenskap, forblir bare gyldig til prosedyren avsluttes. Dette er kjent som en "lokal" variabel. I mange tilfeller trenger du en variabel for Ă„ vĂŠre gyldig i alle prosedyrer, i hver modul i alle biblioteker, eller etter en Sub, en Funksjon eller en Egenskap er avsluttet.

Declaring Variables Outside a Sub a Function or a Property


Global VarName As TYPENAME

The variable is valid as long as the LibreOffice session lasts.


Public VarName As TYPENAME

Variabelen er gyldig i alle modulene.


Private VarName As TYPENAME

Variabelen er kun gyldig i denne modulen.


Dim VarName As TYPENAME

Variabelen er kun gyldig i denne modulen.

Eksempel pÄ private variabler

Enforce private variables to be private across modules by setting CompatibilityMode(True).


  ' ***** Module1 *****
  Private myText As String
  Sub initMyText
      minTekst = "Hallo"
      Print "I modul1: ", minTekst
  End Sub
   
  ' ***** Module2 *****
  'Option Explicit
  Sub demoBug
      CompatibilityMode( True )
      initMyText
      ' Returnerer nÄ ein tom streng
      ' (or raises error for Option Explicit)
      Print "NĂ„ i modul2: ", minTekst
  End Sub

Saving Variable Content after Exiting a Sub a Function or a Property


  Static VarName As TYPENAME

The variable retains its value until the next time the a Function, Sub or Property is entered. The declaration must exist inside a Sub, a Function or a Property.

Specifying the Return Value Type of a Function or a Property

As with variables, include a type-declaration character after the function name, or the type indicated by As and the corresponding data type at the end of the parameter list to define the type of the function or property's return value, for example:


  Function WordCount(WordText As String) As Integer

Supporter oss!