Використання процедур і функцій

Далі описано основне використання процедур і функцій у 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