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

Napíšte komentár