38 lines
908 B
ObjectPascal
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.
|