Використання процедур і функцій
Далі описано основне використання процедур і функцій у LibreOffice Basic.
Коли користувач створює новий модуль, LibreOffice Basic автоматично вставляє процедуру SUB з ім'ям "Main". Це типове ім'я жодним чином не впливає на порядок або початкову точку проекту LibreOffice Basic. Дану процедуру SUB можна перейменувати.
Існують деякі обмеження для назв ваших публічних змінних і функцій. Не допускається використання назв, які збігаються з назвами модулів у бібліотеці.
Процедури (SUBS) і функції (FUNCTIONS) допомагають підтримувати структуроване уявлення за допомогою поділу програми на логічні частини.
Однією корисною властивістю процедур і функцій є те, що після розробки програмного коду, що містить компоненти завдань, цей код можна використовувати в іншому проекті.
Передача змінних до процедур (SUB) і функцій (FUNCTION)
Змінні можуть бути передані процедурам і функціям. Процедуру або функцію необхідно оголосити так, щоб вона могла приймати параметри:
Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Програмний код
End Sub
Процедура SUB викликається за допомогою такого синтаксису:
SubName(Value1, Value2,...)
Параметри, що передаються процедурою, повинні відповідати параметрам, зазначеним в оголошенні процедури.
Такий самий процес застосовується до функцій. До того ж функції завжди повертають результат виконання функції. Результат функції визначається шляхом присвоєння повернутого значення назві функції:
Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Програмний код
НазваФункції=Результат
End Function
Функція викликається за допомогою такого синтаксису:
Змінна=НазваФункції(Параметр1, Параметр2,...)
Для виклику процедури або функції можна також використовувати повне ім'я:
Library.Module.Macro()
Наприклад, для виклику макросу автотексту з бібліотеки Gimmicks використовується така команда:
Gimmicks.AutoText.Main()
Передача змінних з допомогою значення або посилання
Параметри можуть бути передані процедурі чи функції або за допомогою посилання, або з допомогою значення. Якщо не вказано інше, параметр завжди передається за допомогою посилання. Це означає, що процедура або функція отримує параметр і може читати і змінювати його значення.
Якщо потрібно передати параметр за допомогою значення, то при виклику процедури або функції вставте перед параметром ключове слово "ByVal", наприклад:
Результат = Функція(ByVal Параметр)
У цьому випадку вихідний вміст параметра не буде змінюватися функцією, бо вона тільки отримує значення, а не самий параметр.
Область дії змінних
Змінна, визначена в процедурі або функції, залишається дійсною тільки до виходу з процедури. Така змінна називається локальною. У багатьох випадках змінна повинна бути дійсною у всіх процедурах, в кожному модулі всіх бібліотек або після виходу з процедури або функції.
Оголошення змінних за межами процедури SUB або функції FUNCTION
Global VarName As TYPENAME
Змінна існує, поки триває сеанс LibreOffice.
Public VarName As TYPENAME
Змінна може бути використана у всіх модулях.
Private VarName As TYPENAME
Змінна може бути використана тільки в цьому модулі.
Dim VarName As TYPENAME
Змінна може бути використана тільки в цьому модулі.
Приклад для приватних змінних
Змінні можуть бути визначені як приватні для всіх модулів шляхом встановлення CompatibilityMode(true).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Здоровенькі були!"
Print "In module1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
'Повернення порожнього рядка
' (або з'являється повідомлення про помилку для Option Explicit)
Print "Зараз у модулі2 : ", myText
End Sub
Збереження вмісту змінної після виходу з процедури або функції
Static VarName As TYPENAME
Змінна зберігає своє значення до наступного входу в цю функцію або процедуру. Оголошення змінної повинно існувати усередині процедури або функції.
Вказівка типу значення, що повертається функцією
Як і у випадку змінних, вкажіть символ оголошення типу після назви функції або тип, позначений службовим словом "As", і відповідне ключове слово в кінці списку параметрів, щоб визначити тип значення, яке повертається функцією. Наприклад:
Function WordCount(WordText As String) As Integer