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, | 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
ENDSúvisiace stránky: