Delphi - Változások a Variants unitban

forráskód letöltése
A Delphi 7 megjelenésével, többek között a Variants unit is bővült. A unitba belekerült két új függvény és öt új globális változó. A két függvény segítségével hibaváltozókat kezelhetünk. A változók segítenek abban, hogy a Null értékeket tartalmazó Variant változókat könnyebben kezelhessük.
Változók
NullEqualityRule
var NullEqualityRule: TNullCompareRule;
A NullEqualityRule változó segítségével azt állíthatjuk be, hogy miként történjen az olyan Variant típusú változók egyenlőségének ellenőrzése, amelyek közül legalább az egyik Null értéket tartalmaz.
A változó használata az alábbi lehetőségeket kínálja:
Érték Jelentése
ncrLoose Alapértelmezett. Az egyenlőség ellenőrzés eredménye csak akkor igaz, ha mindkét változó Null értéket tartalmaz.
ncrStrict Az egyenlőség ellenőrzés hamis értéket eredményez, ha a változók közül legalább az egyik Null értéket tartalmaz.
ncrError Az egyenlőség ellenőrzés, EVariantInvalidNullOpError hibát eredményez, ha legalább az egyik változó Null értéket tartalmaz.
NullMagnitudeRule
var NullMagnitudeRule: TNullCompareRule;
Ha két Variant típusú változón kisebb – nagyobb (kisebb, kisebb vagy egyenlő, nagyobb, nagyobb vagy egyenlő) ellenőrzéseket akarunk végrehajtani, és a két változó közül legalább az egyik Null értéket tartalmaz, akkor a NullMagnitudeRule változó segítségével befolyásolhatjuk az összehasonlítás módját.
A változó használata az alábbi lehetőségeket kínálja:
Érték Jelentése
ncrLoose Alapértelmezett. A Null értéket úgy kezeli, hogy az minden más értéknél kisebb. Ha az összehasonlításban résztvevő mindkét változó értéke Null, akkor azokat egyenlőknek tekinti.
ncrStrict A vizsgálat hamis értéket eredményez, ha a vizsgálatban résztvevő változók közül legalább az egyik Null értéket tartalmaz.
ncrError A vizsgálat EVariantInvalidNullOpError hibát eredményez, ha legalább az egyik változó Null értéket tartalmaz.
NullStrictConvert
property NullStrictConvert: Boolean;
Ezzel a változóval, a Null tartalmú Variant változók konvertálását kezelhetjük. Ha a változó értékét igazra állítjuk (ez az alapértelmezett), akkor egy olyan értékadás, ahol a Variant típusú változó tartalma Null, EVariantTypeCastError hibát eredményez.
Ha az értékét hamisra állítjuk, akkor a Null érték feldolgozása három fajta lehet.
Cél típus Érték
Logikai False
Numerikus 0
Sztring ’’, azaz üres sztring.
NullAsStringValue
var NullAsStringValue: String;
Ezen a változón keresztül beállíthatjuk, hogy ha egy sztringnek Null értékű Variant változót adunk értékül, akkor a sztringbe milyen érték kerüljön. Ha nem adunk meg semmilyen értéket, akkor az alapértelmezett beállítás az üres sztring.
Ahhoz hogy ezt a lehetőséget használhassunk, a NullStrictConvert változó értékét hamisra kell állítanunk.
PackVarCreation
var PackVarCreation: Boolean;
Ennek a változónak az értéke befolyásolja a memóriában Variant változók számára lefoglalt memóriaterület méretét. Igaz érték (alapértelmezett) esetén a méret már fordítási időben meghatározásra kerül. Ez a lehető legkisebb érték lesz.
Ha a változó értékét False-ra állítjuk, akkor a minimális méret csak futási időben kerül meghatározásra.
Függvények
function VarAsError(AResult: HRESULT): Variant;
A VarAsError függvény egy megadott hibakód alapján, hibaváltozót készít.
function VarIsError(const V: Variant): Boolean; overload;
function VarIsError(const V: Variant; out AResult: HRESULT): Boolean; overload;
A VarIsError függvénynek két fajtája létezik. Arra szolgál, hogy egy Variant típusú változóról el tudjuk dönteni, hogy az hibaváltozó-e. A függvény akkor tér vissza igaz értékkel, ha igen.