una sustancias sustancia sufren resumen que puedo propiedades propiedad porque permiten otro otra materia las identificar forma diferenciar descomponerse como caracteristicas delphi rtti tdatetime

delphi - sustancias - propiedades de la materia resumen



¿Cómo puedo distinguir las propiedades de TDateTime de las propiedades dobles con RTTI? (2)

Utilizando el sistema RTTI en Delphi 2010, ¿hay alguna manera de averiguar si una propiedad es un TDateTime? Actualmente lo estoy tratando como un doble cuando vuelvo a llamar como Variant y también si compruebo el tipo de propiedad. ¿Esto se debe al hecho de que solo puede ver el tipo base? (TDateTime = doble)


El punto clave aquí mientras se define el tipo es la directiva de tipo . Estas dos definiciones son diferentes:

Type TDateTime = Double; // here p.PropertyType.Name returns Double but Type TDateTime = type Double; // here p.PropertyType.Name returns TDateTime or Type u8 = type Byte; // here p.PropertyType.Name returns u8 but Type u8 = Byte; // here p.PropertyType.Name returns Byte !


Intente verificar la propiedad Name del TRttiProperty.PropertyType

No tengo Delphi 2010, pero esto funciona en XE.

{$APPTYPE CONSOLE} uses SysUtils, Classes, Rtti; type TMyClass =class private FDate: TDateTime; FProp: Integer; FDate2: TDateTime; FDate1: TDateTime; public property Date1 : TDateTime read FDate1 Write FDate1; property Prop : Integer read FProp Write FProp; property Date2 : TDateTime read FDate2 Write FDate2; end; var ctx : TRttiContext; t : TRttiType; p : TRttiProperty; begin ctx := TRttiContext.Create; try t := ctx.GetType(TMyClass.ClassInfo); for p in t.GetProperties do if CompareText(''TDateTime'',p.PropertyType.Name)=0 then Writeln(Format(''the property %s is %s'',[p.Name,p.PropertyType.Name])); finally ctx.Free; end; Readln; end.

este código devuelve

the property Date1 is TDateTime the property Date2 is TDateTime