Funkcia %OpenRefToObject


Funkcia
Funkcia %OpenRefToObject umožní požiadať systém o sprístupnenie hodnôt objektu určeného jednoznačným identifikátorom HOBJ.
Deklarácia
  BOOL %OpenRefToObject(
   HBJ in _hbj,
   BOOL in _bSynchro
 )

Parametre
_hbj Hodnota typu HBJ alebo INT.
_bSynchro Hodnota typu Boolean.

Popis
Funkcia požiada systém o sprístupnenie hodnôt objektu, ktorý je určený jeho jednoznačným identifikátorom HOBJ. Funkcia sprístupní hodnoty všetkým ESL skriptom, ktoré sú interpretované v rámci aktuálneho procesu (D2000 HI alebo D2000 EventHandler). Použitie funkcie má zmysel vtedy, ak sa objekt (ktorého HOBJ je uvedené pri volaní funkcie) nenachádza priamo v skripte a systém automaticky nevie, že hodnoty daného objektu sú pre vykonávanie skriptu potrebné.
Príklad
Ak napríklad užívateľská premenná U.Test (typ hodnoty Integer) má HOBJ 1234, tak nasledujúci skript buď bude generovať run-time error (_ERR_OBJECT_NOT_FOUND), alebo lokálna premenná _val nebude mať správnu hodnotu:
 
 INT _val
 ALIAS _a
 
 SET_a AS (1234) 
 
 ; chybný riadok
 _val:= _a 


Tomuto stavu sa dá predísť práve použitím funkcie %OpenRefToObject(IN HBJ _hbj, IN BOOL _bSynchro) nasledovným spôsobom:
 
 BOOL _openOk 
 INT _val 
 ALIAS _a 
 
 SET _a AS (1234) 
 _openOk:= %OpenRefToObject(_a\HBJ,@TRUE) 
 
 IF _openOk  THEN 
 ;Už dobrý riadok
 _val:= _a 
 ELSE 
  ;Objekt s HOBJ 1234 neexistuje !!! 
  ENDIF

 
Parameter _bSynchro je nastavený na @TRUE. Toto nastavenie umožní skontrolovať prostredníctvom návratovej hodnoty funkcie, či objekt s požadovaným HOBJ existuje. Prvé volanie funkcie v rámci aktuálneho procesu synchrónne komunikuje s procesom D2000 Server kvôli overeniu existencie objektu. Táto činnosť môže, v závislosti od vyťaženia systému, určitý čas trvať. Ak tento existuje (funkcia vráti @TRUE), ďalšie následné volania sú rýchle.

Ak je tento parameter nastavený na @FALSE, skript len zašle požiadavku o otvorenie objektu a pokračuje ďalej. Návratová hodnota funkcie je @TRUE, a preto nie je možné overiť, či objekt s daným HOBJ existuje.


Poznámka
Ak skript už nemá záujem o hodnoty daného objektu, systém je informovaný funkciou %CloseRefToObject.