Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

1 Июль 2022, 10:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3   Вниз
  Печать  
Автор Тема: Странность с пропущенными параметрами.  (Прочитано 3810 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 776


« Ответ #59262: 3 Август 2021, 19:49 »

Sub Foo(Optional Bar As Boolean)
  If IsMissing(Bar) Then Bar = True
End Sub

Вторая часть условия (Then) никогда не будет выполнена, потому что обращение к отсутствующему параметру автоматически устанавливает его значение в FALSE, и TRUE уже не присвоить.

Тогда подумайте и скажите, пожалуйста, как может быть, что

Цитата:
Function UDF(Optional bPassedStatus As Boolean)

dim bInnerStatus as boolean

   If IsMissing(bPassedStatus) then bInnerStatus = True

   REM Use the bInnerStatus in the next parts of the function...

это и есть абсолютно работающий во всех режимах единственный (простой) вариант использования опциональных переменных в StarBasic – одна переменная для переданного параметра (сам параметр процедуры), а другая для использования в теле после анализа входного параметра*. По другому не так просто, со всеми особенностями.

Ведь до присвоения всё равно не дойдёт.

Разве что это карго-культ по причине того, что
Во всяком случае совет дан старожилом форума.
Записан

С уважением,
Михаил Каганский
Страниц: « 1 2 3   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!