program tw41011; {$mode DELPHI} uses Rtti ; var ErrorCount: Integer; procedure AreEqual(const AExpected, AActual: Double; const AMessage: string); begin if Abs(AExpected - AActual) > 0.001 then begin WriteLn(AExpected, ' <> ', AActual, ': ', AMessage); Inc(ErrorCount); end; end; begin AreEqual(-10, TValue.From(-10).Cast().AsType, 'TValue.From(-10).Cast().AsType'); AreEqual(205, TValue.From(205).Cast().AsType, 'TValue.From(205).Cast().AsType'); AreEqual(-30012, TValue.From(-30012).Cast().AsType, 'TValue.From(-30012).Cast().AsType'); AreEqual(60123, TValue.From(60123).Cast().AsType, 'TValue.From(60123).Cast().AsType'); AreEqual(-12, TValue.From(-12).Cast().AsType, 'TValue.From(-12).Cast().AsType'); AreEqual(42, TValue.From(42).Cast().AsType, 'TValue.From(42).Cast().AsType'); AreEqual(-10, TValue.From(-10).Cast().AsType, 'TValue.From(-10).Cast().AsType'); AreEqual(205, TValue.From(205).Cast().AsType, 'TValue.From(205).Cast().AsType'); AreEqual(-30012, TValue.From(-30012).Cast().AsType, 'TValue.From(-30012).Cast().AsType'); AreEqual(60123, TValue.From(60123).Cast().AsType, 'TValue.From(60123).Cast().AsType'); AreEqual(-12, TValue.From(-12).Cast().AsType, 'TValue.From(-12).Cast().AsType'); AreEqual(42, TValue.From(42).Cast().AsType, 'TValue.From(42).Cast().AsType'); AreEqual(-10, TValue.From(-10).Cast().AsType, 'TValue.From(-10).Cast().AsType'); AreEqual(205, TValue.From(205).Cast().AsType, 'TValue.From(205).Cast().AsType'); AreEqual(-30012, TValue.From(-30012).Cast().AsType, 'TValue.From(-30012).Cast().AsType'); AreEqual(60123, TValue.From(60123).Cast().AsType, 'TValue.From(60123).Cast().AsType'); AreEqual(-12, TValue.From(-12).Cast().AsType, 'TValue.From(-12).Cast().AsType'); AreEqual(42, TValue.From(42).Cast().AsType, 'TValue.From(42).Cast().AsType'); AreEqual(45.9, TValue.From(45.9).Cast().AsType, 'TValue.From(45.9).Cast().AsType'); AreEqual(45.9, TValue.From(45.9).Cast().AsType, 'TValue.From(45.9).Cast().AsType'); AreEqual(-45689.46, TValue.From(-45689.46).Cast().AsType, 'TValue.From(-45689.46).Cast().AsType'); AreEqual(-45689.46, TValue.From(-45689.46).Cast().AsType, 'TValue.From(-45689.46).Cast().AsType'); AreEqual(662.546, TValue.From(662.546).Cast().AsType, 'TValue.From(662.546).Cast().AsType'); AreEqual(662.546, TValue.From(662.546).Cast().AsType, 'TValue.From(662.546).Cast().AsType'); if ErrorCount > 0 then Halt(ErrorCount); end.