StructCmp

StructCmp

Funkcia %StructCmp


Funkcia

Funkcia porovná dané časti lokálnych štruktúr.

Deklarácia

BOOL %StructCmp( in _recA[fromRowA]^fromColA, IN _recA[toRowA]^toColA, in _recB[fromRowB]^fromColB, INT in _cmpOptions [,INT in _roundPrec] )

Parametre

_recA[fromRowA]^fromColA,
_recA[toRowA]^toColA

Odkaz na hodnotu políčka lokálnej štruktúrovanej premennej.

_recB[fromRowB]^fromColB

Odkaz na hodnotu políčka lokálnej štruktúrovanej premennej.

_cmpOptions

Spôsob porovnania.

_roundPrec

Nepovinný parameter. Ak je použitý, špecifikuje na aký počet desatinných miest sú zaokrúhlené porovnávané hodnoty, ak sú typu Real. Hodnota musí byť >= 0.

Popis

Hodnota parametra _cmpOptions určuje, ktorá časť hodnoty sa bude porovnávať nasledovným spôsobom:

Hodnota

Porovnávať časť hodnoty

1

hodnota

2

čas vzniku hodnoty

4

užívateľské príznaky


Hodnotu parametra _cmpOptions je možné získať sčítaním hore uvedených hodnôt (napríklad, ak chceme porovnávať len čas vzniku hodnoty a užívateľské príznaky, tak hodnota parametra bude 2+4).

Porovnávanie sa vykonáva týmto spôsobom:

A = B

pričom:
Symbol A predstavuje oblasť hodnôt lokálnej štruktúrovanej premennej, ktorá je daná jej ľavým horným rohom (políčkom _recA[fromRowA]^fromColA) a pravým dolným rohom (políčko _recA[toRowA]^toColA). Štruktúrovaná premenná použitá v prvom a druhom parametri musí byť preto tá istá. Týmto sú definované aj rozmery (počet riadkov a stĺpcov). Rozmery sa použijú pri určení oblastí B, ktorá je v parametroch uvedená len jej pravým horným rohom.

Porovnanie sa vykonáva medzi jednotlivými zodpovedajúcimi políčkami oblastí A a B. Funkcia vráti hodnotu @TRUE, ak všetky porovnávané políčka spĺňajú podmienku rovnosti.  

Poznámka

Pri porovnávaní sa dve neplatné hodnoty považujú za rovnaké. Platná a neplatná hodnota sa považujú za rôzne hodnoty.
Príznak platnosť hodnoty nemá vplyv na porovnanie užívateľských príznakov alebo času vzniku hodnôt.

Príklad

Nasledujúci príklad vykoná porovnanie dvoch matíc.
Prvá je ohraničená políčkami _A[1]^_firstColNr (pričom _firstColNr je nastavená na hodnotu 1) a _A[2]^_lastColNr (pričom _lastColNr je nastavená na poradové číslo posledného stĺpca príslušnej štruktúry).
Druhá je daná políčkom _B[1]^_firstColNr a má dva riadky a rovnaký počet stĺpcov ako matica v rámci premennej _A.

 

BEGIN BOOL _bEqual RECORD (SD.BIG) _A RECORD (SD.BIG) _B REDIM _A[20] REDIM _B[20] INT _firstColNr, _lastColNr _firstColNr := 1 _lastColNr := _A\CNR _A[1]^R1 := 1 _A[2]^R1 := 2 DELAY 1[s] _B[1]^R1 := 1 _B[2]^R1 := 2 _bEqual := %StructCmp(_A[1]^_firstColNr, _A[2]^_lastColNr,_B[1]^_firstColNr,1) ;výsledok je @TRUE _bEqual := %StructCmp(_A[1]^_firstColNr, _A[2]^_lastColNr,_B[1]^_firstColNr,2) ;výsledok je @FALSE, pretože časy hodnôt sú rôzne END