Функцията CompatibilityMode() управлява или запитва за режима на изпълнение. Тя влияе върху всичкия код, който се изпълнява след задаване или възстановяване режима на изпълнение.
Използвайте тази възможност внимателно, ограничавайки я например до конвертиране на документи.
CompatibilityMode(Optional Enable As Boolean) As Boolean
Функцията CompatibilityMode винаги връща режима, който е активен след изпълнението ѝ. Това значи, че ако е извикана с аргумент, връща новия режим, а ако е извикана без аргумент, връща активния режим, без да го сменя.
Enable: задава или отменя режим на съвместимост, когато аргументът присъства.
Функцията CompatibilityMode е свързана с Option VBASupport 1 и в този случай винаги връща True. Тя не е свързана с директивата на компилатора Option Compatible.
Тази функция може да повлияе или да помогне в следните ситуации:
Определяне обхвата на променливите.
Изпълнение на командата RmDir в режим VBA. Във VBA RmDir премахва само празни директории, докато LibreOfficeDev Basic премахва директориите рекурсивно.
Промяна на поведението на командата Dir на Basic. В LibreOfficeDev Basic флагът за директория (16) на командата Dir означава връщане само на директориите, докато във VBA се връщат обикновените файлове и директориите.
Изчисляване на цветови компоненти с функциите Red и Blue, които са разменени (Функцията Green не е засегната).
Ако има НЕПРАЗНА директория с път file:///home/me/Test
Sub RemoveDir
MsgBox CompatibilityMode() ' False
CompatibilityMode( True )
RmDir( "file:///home/me/Test" )
CompatibilityMode False
MsgBox CompatibilityMode ' False
End Sub
С CompatibilityMode(True) изпълнението на програмата ще предизвика грешка, а без него директорията Test ще бъде изтрита заедно с цялото си съдържание.
Промяна на поведението на Dir
Sub VBADirCommand
CompatibilityMode( Enable := True ) ' Показва и обикновените файлове
Entry$ = Dir( "file:///home/me/Tmp/*.*", 16 )
Total$ = ""
While Entry$ <> ""
Total$ = Total$ + Entry$ + Chr$(13)
Entry$ = Dir
Wend
MsgBox Total$
CompatibilityMode Enable := False ' Показва само директориите
End Sub