Files
MycLib/Src/Data/Myc.Data.Types.RTTI.pas
T
Michael Schimmel 54d470b2f8 New type system
2025-08-26 15:49:28 +02:00

38 lines
908 B
ObjectPascal

unit Myc.Data.Types.RTTI;
interface
uses
System.SysUtils,
System.RTTI,
Myc.Data.Types;
type
TValueHelper = record helper for TDataType.TValue
function AsTValue: TValue;
end;
implementation
uses
System.Math;
{ TValueHelper }
function TValueHelper.AsTValue: TValue;
begin
case DataType.Kind of
dkVoid: Result := TValue.Empty;
dkOrdinal: Result := TValue.From<Int64>(AsOrdinal.Value);
dkFloat: Result := TValue.From<Double>(AsFloat.Value);
dkText: Result := TValue.From<string>(AsText.Value);
dkTimestamp: Result := TValue.From<TDateTime>(AsTimestamp.Value);
dkEnum: Result := TValue.From<Integer>(AsEnum.Value);
dkMethod: Result := TValue.From<TDataMethodProc>(AsMethod.Value);
else
raise EInvalidOpException.Create('Unsupported data type');
end;
end;
end.