Akcia FIND_TRUE


Funkcia
Akcia hľadá hodnotu riadiacej lokálnej premennej, pre ktorú daný výraz nadobudne hodnotu @TRUE.
Deklarácia
FIND_TRUE _index, maxIndex, _retCode, find_expression

Parametre
_index in/out Identifikátor (lokálna premenná) typu Int. Riadiaca premenná pre výraz.
maxIndex in Identifikátor (lokálna premenná) typu Int - maximálna hodnota riadiacej premennej.
_retCode out Identifikátor typu Int - návratový kód.
find_expression in Výraz typu Bool.

Popis
Akcia postupne zvyšuje hodnotu lokálnej riadiacej premennej _index o +1. Pred každým zvýšením hodnoty vyhodnotí výraz find expression. Ak výraz nadobudne hodnotu @TRUE akcia končí a riadiaca premenná _index obsahuje danú hodnotu. Ak výraz nebude úspešne vyhodnotený (neplatné hodnoty, ....) premenná _retCode bude obsahovať typ chyby, ináč _ERR_NO_ERROR.
Maximálna hodnota premennej _index je daná parametrom maxIndex. Ak výraz find expression nenadobudne hodnotu @TRUE v celom povolenom rozsahu, po ukončení akcie bude mať premenná _index hodnotu maxIndex+1.

Je nutné, aby hodnota výrazu find expression závisela od hodnoty riadiacej premennej. Ak nie, akcia generuje chybu _ERR_LOCAL_VAR_NFOUND.

Ako vidieť v príklade, akciu je možné výhodne použiť pri prehľadávaní štruktúr.
Príklad:
 RECORD (SD.RecordDef) _struct
 INT _index
 INT _maxIndex
 
INT _retCode
 .......
 
 ; vyhľadanie riadku, ktorý obsahuje text "ahoj" v stĺpci Text
 _index := 1           ; hľadám od prvého riadku
 _maxIndex := _struct\DIM
 
 FIND_TRUE _index, _maxIndex, _retCode, _struct[_index]^Text="ahoj"
 IF _retCode # _ERR_NO_ERROR THEN
   ; na riadku _index nastala chyba _retCode
 ELSIF _index = _maxIndex+1 THEN
   ; požadovaný riadok sa nenašiel
 ELSE
   ; riadok _index obsahuje text "ahoj" v stĺpci Text
 ENDIF 


Súvisiace stránky:

Napíšte komentár