_ExistGVal

(    Name    : String[;
     SafeVal : Byte = false]) : xxx

Zjišťuje, zda existuje dynamická globální proměnná jejíž jméno přichází v parametru Name. Jestliže proměnná nebude nalezena, vrací false jinak true.

Jestliže bude nepovinný parametr SafeVal = true, bude v případě existence proměnné vytvořena její bezpečná kopie s prefixem

'#$_'.

Po přečtení proměnné s tímto prefixem funkcí _GetGVal bude proměnná smazána. Důvodem této funkcionality je používání zavislostí existence globálních proměnných na změnách databázovách vět v síti nebo v lokálním programu. Závislosti se nastavují procedurou SetGValDepend.

Při standardním čtení globální proměnné se používá sekvence funkcí:

if(_ExistGVal("test"))then
    PrintUp(_GetGVal("test"))
endif

Jestliže je ovšem na globální proměnnou 'test' uplatněna nějaká závislost, může ihned po kladném zjištění existence funkcí _ExistGVal proměnná 'test' přestat existovat (systém jí vnitřně smaže na základě pokynu jiné stanice v síti) a funkce _GetGVal vyhodí chybu. Robustnější (ale pomalejší) zápis tedy je:

if(_ExistGVal("test", true))then
    PrintUp(_GetGVal("#$_test"))
endif

Dočasná globální proměnná '#$_test' bude při čtení funkcí _GetGVal existovat určitě. Po přečtení sama zanikne.

Nesprávné použití demonstruje příklad:

SetGValdepend("test", 55, dbtStr, 100); { zavede proměnnou 'test', jejiž existence závisí na změně věty střediska s id=100 }
if _ExistGVal("test") then
    SendDBChangeInfo(dbtStr, 100);      { simuluje úpravu věty střediska s id=100 v síti nebo v lokálním programu }
    wait                                { je nutné zdržení, aby zpráva došla do systému zrušení globální proměnné }
    printup(_GetGVal("test"));          { zde bude vyhozena chyba }
endif

Podívejte se na: Globální proměnné

Příklad:

if(_ExistGVal("test"))then
    PrintUp(_GetGVal("test"))
endif
SetGVal("Test", "Testovací řetězec");