Can't overload comparative operators by Delphi-way, with error: "Comparative operator must return a boolean value"
Original Reporter info from Mantis: Nicky
-
Reporter name: Nick
Original Reporter info from Mantis: Nicky
- Reporter name: Nick
Description:
This code compiles on Delphi >= 2007, but not compiles with FPC:
type
TSqlCondition = record
public
class operator LogicalAnd(const Cond1: TSqlCondition; const Cond2: TSqlCondition): TSqlCondition;
class operator LogicalOr(const Cond1: TSqlCondition; const Cond2: TSqlCondition): TSqlCondition;
class operator LogicalNot(const Cond1: TSqlCondition): TSqlCondition;
end;
TSqlInteger = record
public
class operator Implicit(const V: Int64): TSqlInteger;
class operator Negative(const V1: TSqlInteger): TSqlInteger;
class operator Equal(const V1: TSqlInteger; const V2: TSqlInteger): TSqlCondition;
class operator Equal(const V1: TSqlInteger; const V2: Int64): TSqlCondition;
class operator NotEqual(const V1: TSqlInteger; const V2: TSqlInteger): TSqlCondition;
class operator NotEqual(const V1: TSqlInteger; const V2: Int64): TSqlCondition;
class operator GreaterThan(const V1: TSqlInteger; const V2: TSqlInteger): TSqlCondition;
class operator GreaterThan(const V1: TSqlInteger; const V2: Int64): TSqlCondition;
class operator GreaterThanOrEqual(const V1: TSqlInteger; const V2: TSqlInteger): TSqlCondition;
class operator GreaterThanOrEqual(const V1: TSqlInteger; const V2: Int64): TSqlCondition;
class operator LessThan(const V1: TSqlInteger; const V2: TSqlInteger): TSqlCondition;
class operator LessThan(const V1: TSqlInteger; const V2: Int64): TSqlCondition;
class operator LessThanOrEqual(const V1: TSqlInteger; const V2: TSqlInteger): TSqlCondition;
class operator LessThanOrEqual(const V1: TSqlInteger; const V2: Int64): TSqlCondition;
class operator Add(const V1: TSqlInteger; const V2: TSqlInteger): TSqlInteger;
class operator Add(const V1: TSqlInteger; const V2: Int64): TSqlInteger;
class operator Subtract(const V1: TSqlInteger; const V2: TSqlInteger): TSqlInteger;
class operator Subtract(const V1: TSqlInteger; const V2: Int64): TSqlInteger;
class operator Multiply(const V1: TSqlInteger; const V2: TSqlInteger): TSqlInteger;
class operator Multiply(const V1: TSqlInteger; const V2: Int64): TSqlInteger;
class operator Divide(const V1: TSqlInteger; const V2: TSqlInteger): TSqlInteger;
class operator Divide(const V1: TSqlInteger; const V2: Int64): TSqlInteger;
end;
procedure Test;
var
Condition: TSqlCondition;
F1, F2: TSqlInteger;
begin
Condition := ((F1 * 3 - 7) > (F1 * 2 + 5)) and ((F1 / F2) < (F1 * 2));
Condition := (not Condition) and ((F1 = F2) or (F1 <> F2));
end;
Mantis conversion info:
- Mantis ID: 25370
- Version: 2.6.2