IBM Lotus Symphony


Brug af procedurer og funktioner

I det følgende beskrives i korte træk brugen af procedurer og funktioner i Lotus® Symphony™ Basic.

Ikonen Note Når du opretter et nyt modul, indsætter Lotus Symphony Basic automatisk en underrutine ved navn "Main". Dette standardnavn har ikke noget at gøre med rækkefølgen i eller udgangspunktet for et Lotus Symphony Basic-projekt. Der sker ikke noget ved at omdøbe denne underrutine.

Med procedurer (underrutiner) og funktioner kan du opdele et program i logiske bestanddele og dermed skabe en struktureret oversigt over programmet.

En af fordelene ved procedurer og funktioner er, at så snart du har udviklet programkode med opgavekomponenter, kan du benytte koden i et andet projekt.

Overførsel af variabler til procedurer (underrutiner) og funktioner

Der kan overføres variabler til både procedurer og funktioner. I erklæringen af underrutinen eller funktionen skal det angives, at den forventer parametre:

SUB RutineNavn(Parameter1 As Type, Parameter2 As Type,... )

Programkode

End Sub

Underrutinen kaldes med følgende syntaks:

RutineNavn(Værdi1, Værdi2,...)

De parametre, der overføres til en underrutine, skal passe med dem, der er angivet i erklæringen af underrutinen.

Det samme gælder funktioner. Derudover returnerer funktioner altid et funktionsresultat. Resultatet af en funktion defineres ved, at returværdien tildeles funktionsnavnet:

Function FunktionsNavn(Parameter1 As Type, Parameter2 As Type,...) As Type

Programkode

FunktionsNavn=Resultat

End Function

Funktionen kaldes med følgende syntaks:

Variabel=FunktionsNavn(Parameter1, Parameter2,...)

Ikonen Tip Du kan også bruge det fuldstændige navn til at kalde en procedure eller funktion: Library.Module.Macro() Hvis du f.eks. vil kalde makroen Autotext fra biblioteket Gimmicks, skal du bruge følgende kommando: Gimmicks.AutoText.Main()

Overførsel af variabler som værdi eller reference

Parametre til en underrutine eller funktion kan enten overføres som reference eller som værdi. Medmindre andet angives, overføres en parameter altid som reference. Det betyder, at en underrutine eller funktion modtager parameteren og kan læse og ændre dens værdi.

Hvis du vil overføre en parameter som værdi, skal du indsætte nøgleordet "ByVal" foran parameteren, når du kalder en underrutine eller funktion. Eksempel:

Resultat = Funktion(ByVal parameter)

I det tilfælde kan funktionen ikke ændre parameterens oprindelige indhold, da den kun modtager værdien og ikke selve parameteren.

Variablers omfang

En variabel, der defineres i en underrutine eller funktion, gælder kun, indtil proceduren afsluttes. Det kaldes en "lokal" variabel. Der er ofte brug for, at en variabel gælder i alle procedurer i alle moduler i alle biblioteker, eller efter underrutinen eller funktionen er afsluttet.

Erklæring af variabler uden for en underrutine eller funktion

GLOBAL VarNavn As TYPENAVN

Denne variabel gælder, så længe sessionen med Lotus Symphony varer.

PUBLIC VarNavn As TYPENAVN

Variablen gælder i alle moduler.

PRIVATE VarNavn As TYPENAVN

Variablen gælder kun i det pågældende modul.

DIM VarNavn As TYPENAVN

Variablen gælder kun i det pågældende modul.

Eksempel for private variabler

Gennemtving, at private variabler er private på tværs af moduler ved at angive CompatibilityMode(true).

REM ***** Modul1 *****

Private minTekst As String

Sub initMinTekst

minTekst = "Hallo"

print "i modul1 : ", minTekst

End Sub

REM ***** Modul2 *****

'Option Explicit

Sub demoBug

CompatibilityMode( true )

initMinTekst

' Returnerer nu tom streng

' (eller fremkalder fejl for Option Explicit)

print "Nu i modul2 : ", minTekst

End Sub

Bevarelse af variabelindhold efter afslutning af en underrutine eller funktion

STATIC VarNavn As TYPENAVN

Variablen bevarer sin værdi, indtil funktionen eller underrutinen startes næste gang. Erklæringen skal foretages i en underrutine eller funktion.

Angivelse af en funktions returværditype

Ligesom ved variabler definerer du typen af en funktions returværdi ved at indsætte et tegn til typeerklæring efter funktionsnavnet eller ved at skrive "As" efterfulgt af det relevante nøgleord sidst i parameterlisten. Eksempel:

Function AntalOrd (OrdTekst as String) as Integer


Produktfeedback | Yderligere dokumentation | Varemærker