-
-
Save superswanman/886ed984d230ac1b42dd89ed42ab2214 to your computer and use it in GitHub Desktop.
| program Project1; | |
| {$APPTYPE CONSOLE} | |
| uses | |
| System.SysUtils, System.Classes, System.Types, Vcl.Dialogs; | |
| type | |
| TStringListEx = class(TStringList) | |
| public | |
| // class operator In(const A: string; B: TStringListEx): Boolean; | |
| class function &&op_In(const A: string; B: TStringListEx): Boolean; static; | |
| end; | |
| TPointHelper = record helper for TPoint // Possible in class helper! | |
| public | |
| // class operator Equal(const A: TPoint; const B: string) : Boolean; | |
| class function &&op_Equality(const A: TPoint; const B: string): Boolean; static; | |
| end; | |
| class function TStringListEx.&&op_In(const A: string; B: TStringListEx): Boolean; | |
| begin | |
| Result := B.IndexOf(A) >= 0; | |
| end; | |
| class function TPointHelper.&&op_Equality(const A: TPoint; const B: string): Boolean; | |
| begin | |
| Result := Format('%d,%d', [A.X, A.Y]) = B; | |
| end; | |
| var | |
| sl: TStringListEx; | |
| pt: TPoint; | |
| ret: Boolean; | |
| begin | |
| sl := TStringListEx.Create; | |
| sl.Add('AAA'); | |
| sl.Add('BBB'); | |
| ret := 'AAA' in sl; | |
| Writeln(BoolToStr(ret, True)); // -> 'True' | |
| pt := Point(123, 456); | |
| ret := pt = '123,456'; | |
| Writeln(BoolToStr(ret, True)); // -> 'True' | |
| Readln; | |
| end. |
list of class operators:
Implicit &&op_Implicit
Explicit &&op_Explicit
Negative &&op_UnaryNegation
Positive &&op_UnaryPlus
Inc &&op_Increment
Dec &&op_Decrement
LogicalNot &&op_LogicalNot
Trunc &&op_Trunc
Round &&op_Round
In &&op_In
Equal &&op_Equality
NotEqual &&op_Inequality
GreaterThan &&op_GreaterThan
GreaterThanOrEqual &&op_GreaterThanOrEqual
LessThan &&op_LessThan
LessThanOrEqual &&op_LessThanOrEqual
Add &&op_Addition
Subtract &&op_Subtraction
Multiply &&op_Multiply
Divide &&op_Division
IntDivide &&op_IntDivide
Modulus &&op_Modulus
LeftShift &&op_LeftShift
RightShift &&op_RightShift
LogicalAnd &&op_LogicalAnd
LogicalOr &&op_LogicalOr
LogicalXor &&op_ExclusiveOr
BitwiseAnd &&op_BitwiseAnd
BitwiseOr &&op_BitwiseOr
BitwiseXor &&op_BitwiseXOR
Include &&op_Include
Exclude &&op_Exclude
Is it possible to overload for interface types?
Is it possible to overload for interface types?
No
Hi not work for records...