| @@ -6,6 +6,7 @@ public | |||||
| class function TryToSet(const Str: String; out Value: __SET_TYPE): boolean; overload; | class function TryToSet(const Str: String; out Value: __SET_TYPE): boolean; overload; | ||||
| class function ToSet(const Str: String; const aDefault: __SET_TYPE): __SET_TYPE; overload; | class function ToSet(const Str: String; const aDefault: __SET_TYPE): __SET_TYPE; overload; | ||||
| class function ToSet(const Str: String): __SET_TYPE; overload; | class function ToSet(const Str: String): __SET_TYPE; overload; | ||||
| class function Compare(const aSet1, aSet2: __SET_TYPE): Integer; | |||||
| end; | end; | ||||
| {$ELSEIF defined (__SET_IMPLEMENTATION)} | {$ELSEIF defined (__SET_IMPLEMENTATION)} | ||||
| @@ -64,6 +65,22 @@ begin | |||||
| end; | end; | ||||
| end; | end; | ||||
| class function __SET_HELPER.Compare(const aSet1, aSet2: __SET_TYPE): Integer; | |||||
| var | |||||
| i: __ENUM_TYPE; | |||||
| begin | |||||
| result := 0; | |||||
| for i := High(i) downto Low(i) do begin | |||||
| if (i in aSet1) and not (i in aSet2) then begin | |||||
| result := 1; | |||||
| break; | |||||
| end else if not (i in aSet2) and (i in aSet2) then begin | |||||
| result := -1; | |||||
| break; | |||||
| end; | |||||
| end; | |||||
| end; | |||||
| {$ENDIF} | {$ENDIF} | ||||
| {$undef __SET_HELPER} | {$undef __SET_HELPER} | ||||
| {$undef __SET_TYPE} | {$undef __SET_TYPE} | ||||