FIND_TRUE

FIND_TRUE

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:

Akcie v skriptoch