Помощ за Collabora Office 24.04
По-долу са описани основите на работа с процедури, функции и свойства в Collabora Office Basic.
Когато създадете нов модул, Collabora Office Basic автоматично вмъква процедура (Sub) с име „Main“. Това подразбирано име не е свързано с реда или началната точка на изпълнение на проект на Collabora Office Basic. Можете безопасно да преименувате тази подпрограма от тип Sub.
За имената на публичните променливи, подпрограми, функции и свойства са в сила някои ограничения. Не трябва да използвате име, еднакво с това на модул от същата библиотека.
Процедурите (подпрограми със Sub), функциите (Function) и свойствата (Property) ви помагат да структурирате програмата, като я разделите на логически обособени части.
Едно предимство на процедурите, функциите и свойствата е, че след като веднъж сте разработили програмен код, разделен на компоненти за определени задачи, можете да ги използвате отново в друг проект.
Можете да предавате променливи към процедури, функции и свойства. В декларацията на съответната подпрограма (Sub, Function или Property) трябва е указано, че тя очаква параметри:
Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
' място за вашия код
End Sub
Процедурата (Sub) се извиква със следния синтаксис:
[Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Подадените към процедура параметри трябва да съответстват на указаните в декларацията Sub.
Същото се отнася за функциите (Function). Освен това функциите винаги връщат резултат. Резултатът на функция се дефинира, като връщаната стойност се присвои на името на функцията:
Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
' място за вашия код
FunctionName=Result
End Function
Функцията (Function) се извиква със следния синтаксис:
Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)
Свойствата комбинират синтаксиса на процедурите и функциите. Те обикновено изискват не повече от един параметър.
Private _IsApproved As TYPENAME
Property Get IsApproved As TYPENAME
' място за вашия код
IsApproved = some_computation
End Property
Property Let IsApproved(value As TYPENAME)
' място за вашия код
_IsApproved = computed_value
End Property
Свойството (Property) се извиква със следния синтаксис:
var = IsApproved
IsApproved = some_value
За обръщение към процедура, функция или свойство можете да използвате и напълно квалифицирано име:
[Call] Библиотека.Модул.Макрос(), където Call е незадължително.
Например, за да извикате макроса Autotext от библиотеката Gimmicks, използвайте следната команда:
Gimmicks.AutoText.Main()
Към процедури, функции и свойства могат да се подават параметри по адрес или по стойност. Ако не е указано друго, параметрите винаги се предават по адрес. Това означава, че подпрограмата от тип Sub, Function или Property получава параметъра и може да чете и променя стойността му.
Ако искате да предадете параметър по стойност, вмъкнете пред него ключовата дума ByVal, когато извиквате подпрограма от тип Sub, Function или Property, например:
Function ReadOnlyParms(ByVal p2, ByVal p2)
' място за вашия код
End Function
result = ReadOnlyParms(parm1, parm2)
В този случай оригиналното съдържание на параметъра няма да бъде променено от функцията, тъй като тя получава само стойността, но не и самия параметър.
Функциите, процедурите и свойствата могат да бъдат дефинирани с незадължителни параметри, например:
Sub Rounding(number, Optional decimals, Optional format)
' място за вашия код
End Sub
Когато извиквате функция или процедура, можете да предадете аргументите ѝ по позиция или по име. Предаването по позиция представлява просто изреждане на аргументите в реда, в който са дефинирани параметрите във функцията или процедурата. Предаването по име изисква да напишете преди аргумента името на съответния параметър, последвано от двоеточие и знак за равенство (:=). Аргументите с ключови думи могат да се подават в произволен ред. За примери вижте функцията на Basic Replace().
Когато не искате да подавате всички параметри, използвайте аргументи с ключови думи. Предаването на стойности за по-малко параметри по позиция изисква да предоставите стойности за всички параметри преди тях, задължителни или не. Така се осигурява правилната позиция на всяка стойност. Ако подавате параметрите по име, чрез аргументи с ключови думи, можете да пропуснете всички други аргументи между тях.
Променливите, дефинирани в подпрограма от тип Sub, Function или Property, са валидни само до излизане от подпрограмата. Такива променливи се наричат „локални“. В много случаи е необходимо една променлива да е валидна във всички подпрограми, във всички модули на всички библиотеки или след излизане от подпрограма Sub, Function или Property.
Global VarName As TYPENAME
Променливата е валидна, докато трае сесията на Collabora Office.
Public VarName As TYPENAME
Променливата е валидна за всички модули.
Private VarName As TYPENAME
Променливата е валидна само в този модул.
Dim VarName As TYPENAME
Променливата е валидна само в този модул.
За да направите частните променливи частни за всички модули, задайте CompatibilityMode(True).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Здравейте"
Print "В module1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( True )
initMyText
' Сега връща празен низ
' (или предизвиква грешка за Option Explicit)
Print "Сега в module2 : ", myText
End Sub
Static VarName As TYPENAME
Променливата запазва стойността си до следващото влизане в съответната подпрограма Function, Sub или Property. Декларацията трябва да е в такава подпрограма.
Както и при променливите, за да дефинирате типа на връщаната стойност на функция или свойство, добавете знак за деклариране на тип след името на функцията или укажете типа с As и име на тип данни в края на списъка с параметри, например:
Function WordCount(WordText As String) As Integer