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.
0 komentárov