Protseduuride ja funktsioonide kasutamine

JÀrgnev tekst kirjeldab LibreOffice BASICu protseduuride ja funktsioonide kasutamise pÔhitÔdesid.

MĂ€rkuse ikoon

Uue mooduli loomisel lisab LibreOffice Basic automaatselt SUBi Main. See vaikimisi nimi ei nĂ€ita LibreOffice Basicu projekti alguspunkti jĂ€rjekorda. Soovi korral saad selle SUBi ĂŒmber nimetada.


MĂ€rkuse ikoon

Avalike muutujate, protseduuride ja funktsioonide nimede kohta kehtivad mÔned piirangud. Neid nimesid ei tohi kasutada sama teegi mÔne mooduli nimena.


Protseduurid (SUBid) ja funktsioonid (FUNCTIONid) aitavad sĂ€ilitada programmist ĂŒlevaadet, jagades programmi loogilisteks tĂŒkkideks.

Üks kasulik asjaolu protseduuride ja funktsioonide juures on see, et kui sa oled korra kirjutanud programmi koodi, mis sisaldab konkreetseid ĂŒlesande komponente, siis saad sama koodi teistes projektides uuesti kasutada.

Muutujate edastamine protseduuridele (SUB) ja funktsioonidele (FUNCTION)

Muutujad saab edastada nii protseduuridele kui ka funktsioonidele. Parameetrite jaoks tuleb SUBid ja FUNCTIONid deklareerida:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Programmi kood
End Sub

SUB kutsutakse vĂ€lja jĂ€rgmise sĂŒntaksiga:


SubName(Value1, Value2,...)

SUBile edastatavad parameetrid peavad sobima SUBi deklareerimisel kasutatutega.

Sama kehtib funktsioonide (FUNCTION) kohta. Lisaks tagastavad funktsioonid alati tulemuse. Funktsiooni tulemus defineeritakse selliselt, et funktsiooni nimele omistatakse tagastusvÀÀrtus:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Programmi kood
FunctionName=Result
End Function

FUNCTION kustutakse vĂ€lja jĂ€rgmise sĂŒntaksiga:


Variable=FunctionName(Parameter1, Parameter2,...)
NÔuande ikoon

Protseduuri vÔi funktsiooni vÀljakutsumiseks vÔib kasutada ka tÀispikka nime:
Teek.Moodul.Makro()
NÀiteks, et kutsuda vÀlja makro Autotext, mis asub teegis Gimmicks, kasuta jÀrgmist kÀsku:
Gimmicks.AutoText.Main()


Muutujate edastamine vÀÀrtuse vÔi viida jÀrgi

SUBile vÔi FUNCTIONile saab parameetreid edastada vÀÀrtuse vÔi viida kaudu. Kui pole teisiti mÀÀratud, siis edastatakse muutuja alati viida kaudu. See tÀhendab, et SUB vÔi FUNCTION saab parameetri ning vÔib selle vÀÀrtust lugeda ja muuta.

Kui tahad edastada parameetrit vÀÀrtuse jÀrgi, siis lisa SUBi vÔi FUNCTIONi vÀljakutsumisel parameetri ette mÀrksÔna "ByVal". NÀiteks:


Result = Function(ByVal Parameter)

Sellisel juhul FUNCTION muutuja originaalsisu ei muuda, kuna ta saab ainult vÀÀrtuse, mitte parameetri enda.

Muutujate skoop

SUBis vÔi FUNCTIONis mÀÀratud muutuja kehtib ainult kuni protseduuri sulgemiseni. Seda nimetatakse kohalikuks muutujaks. Paljudel juhtudel on vaja, et muutuja kehtiks kÔigis protseduurides, moodulites ja teekides vÔi pÀrast SUBi vÔi FUNCTIONi sulgemist.

Muutujate deklareerimine vÀljaspool SUBi vÔi FUNCTIONit


GLOBAL VarName As TYPENAME

Muutuja on kehtiv niikaua, kuni kestab LibreOffice'i seanss.


PUBLIC VarName As TYPENAME

Muutuja kehtib kÔigis moodulites.


PUBLIC VarName As TYPENAME

Muutuja kehtib ainult selles moodulis.


PUBLIC VarName As TYPENAME

Muutuja kehtib ainult selles moodulis.

Privaatsete muutujate nÀide

JÔusta privaatsed muutujad privaatsetena kÔigis moodulites, seades CompatibilityMode (tÔene).


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Hello"
    print "in module1 : ", myText
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Tagastab tĂŒhja stringi
    ' (or raises error for Option Explicit)
    print "Now in module2 : ", myText
End Sub

Muutuja sisu salvestamine pÀrast SUB-ist vÔi FUNCTION-ist vÀljumist


STATIC VarName As TYPENAME

Muutuja sÀilitab oma vÀÀrtuse kuni FUNCTIONi vÔi SUBi jÀrgmise sisestamiseni. Deklaratsioon peab olema SUBi vÔi FUNCTIONi sees.

FUNCTION-i tagastusvÀÀrtuse tĂŒĂŒbi mÀÀramine

Funktsiooni tagastusvÀÀrtuse tĂŒĂŒbi mÀÀramiseks lisa nii nagu ka muutujate korral funktsiooni nime jĂ€rele tĂŒĂŒbikirjelduse mĂ€rk vĂ”i sisesta parameetrite loendi lĂ”ppu As-i mÀÀratud tĂŒĂŒp ja vastav vĂ”tmesĂ”na, nĂ€iteks:


Function WordCount(WordText As String) As Integer

Palun toeta meid!