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

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