Funkce CompatibilityMode

Obsah
Rejstřík 🔎︎

# Funkce CompatibilityMode()

Funkce CompatibilityMode() určuje či zjišťuje režim běhu programů. Ovlivňuje, jak se bude po nastavení nebo zrušení tohoto režimu vykonávat veškerý kód.

Používejte tuto funkci opatrně, například ji omezte na převody dokumentů.

### Syntaxe:

          CompatibilityMode(Optional Enable As Boolean) As Boolean

### Návratová hodnota:

Funkce CompatibilityMode vždy vrátí režim, který je aktivní po jejím provedení. Tj. zavoláte-li ji s argumentem, vrátí nový režim, v opačném případě vrátí aktivní režim a nezmění jej.

### Parametry:

Enable: Je-li tento argument zadán, nastaví nebo zruší nastavení nového režimu kompatibility.

Funkce CompatibilityMode se vztahuje k možnosti Option VBASupport 1, pro kterou vždy vrátí True. Nesouvisí s direktivou kompilátoru Option Compatible.

Tato funkce může ovlivnit následující situace:

- Viditelnost proměnných.

- Spouštění příkazu RmDir v režimu VBA. V něm funkce RmDir odstraní pouze prázdné adresáře, zatímco LibreOffice Basic odstraní adresář rekurzivně.

- Změna chování příkazu Basicu Dir. Příznak pro adresáře (16) u příkazu Dir znamená, že se v jazyku LibreOffice Basic vrátí pouze adresáře, kdežto v režimu VBA se vrátí adresáře i běžné soubory.

- Výpočet složek barvy pomocí funkcí Red a Blue, které jsou odlišné. (Funkce Green není ovlivněna.)

### Příklad:

Za předpokladu, že adresář file:///home/me/Test není prázdný

          Sub RemoveDir
              MsgBox CompatibilityMode() ' False

              CompatibilityMode( True )
              RmDir( "file:///home/me/Test" )
              CompatibilityMode False

              MsgBox CompatibilityMode ' False
          End Sub

S CompatibilityMode(True) nastane v programu chyba, v opačném případě bude smazání adresář Test a veškerý jeho obsah.

### Příklad:

Změna chování funkce Dir

        Sub VBADirCommand
            CompatibilityMode( Enable := True )   ' Zobrazí také běžné soubory
            Entry$ = Dir( "file:///home/me/Tmp/*.*", 16 )
            Total$ = ""
            While Entry$ <> ""
                Total$ = Total$ + Entry$ + Chr$(13)
                Entry$ = Dir
            Wend
            MsgBox Total$
            CompatibilityMode Enable := False ' Zobrazí pouze adresáře
        End Sub

Související témata

Příkaz Option Compatible

Příkaz Rem

Změna rozsahu platnosti proměnných pomocí funkce CompatibilityMode() je uvedena v části Použití procedur a funkcí.

Příkaz Option Base

Příkaz Option Explicit

Příkaz Option VBASupport

Příkaz Option ClassModule