Delphi 2010'da RTTI sistemini kullanarak, bir mülkün bir TDateTime olup olmadığını öğrenmenin bir yolu var mı? Şu anda her ne zaman bir geri dönüş olarak çağırıyorsam, ve ben de mülk tipini kontrol edersem. Bu sadece taban tipini görebildiği için mi? (TDateTime = çift)TDateTime özelliklerini RTTI ile Double özelliklerinden nasıl ayırt edebilirim?
17
A
cevap
22
deneyin ben Delphi 2010 yok TRttiProperty.PropertyType
ait Name
özelliğini kontrol, ancak bu XE çalışır. türünü tanımlayan tip yönergesi ise
{$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.
bu kod burada
the property Date1 is TDateTime
the property Date2 is TDateTime
3
Anahtar noktayı döndürür. Bu iki tanım farklıdır:
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 !
+0
Açıkçası OP, söz konusu türleri açıklamamıştı, bu yüzden teknik olarak bu bir cevap değil, fakat tam olarak haklısınız ve bu ek açıklama iyi bir bilgi olsa da. +1 – NGLN
İlgili konular
- 1. Kaçak ile iki dalı nasıl ayırt edebilirim?
- 2. İki dosyayı tam bağlamda nasıl ayırt edebilirim?
- 3. GitHub'da iki dalı nasıl ayırt edebilirim?
- 4. Bir EOF karakteri ile dosyanın gerçek sonunu nasıl ayırt edebilirim?
- 5. Bu long_description ve README'yi birkaç cümle ile nasıl ayırt edebilirim?
- 6. RTTI
- 7. pow nasıl uygulanır (double x, double y)?
- 8. Seri hale getirilmeden önce XML dosyalarının türlerini nasıl ayırt edebilirim?
- 9. RenderAction ve AJAX aracılığıyla yapılan istekleri nasıl ayırt edebilirim?
- 10. .Net'deki tek ve çift tıklamaları nasıl ayırt edebilirim?
- 11. Fare düğme olayından tekerlek düğmesi tıklama etkinliğini nasıl ayırt edebilirim?
- 12. Clojure’ı nasıl ayırt edebilirim? Bir koleksiyon üzerinde işlev?
- 13. Delphi RTTI: Özellik sınıfını alın
- 14. FireMonkey stil kaynaklarını RTTI ile yükleme
- 15. Düğüm ve nvm ile ES6 özelliklerini alma
- 16. Bir unset float ve bir 0 değeri ile nasıl ayırt edebilirim?
- 17. Delphi: belirlemek ve boş TDateTime değeri
- 18. printf ve co, float ile double
- 19. İlkbahar - özelliklerinden değeri
- 20. RTTI kullanarak Delphi'de erişim alanına nasıl erişilir?
- 21. Delphi Sınıf Yardımcısı RTTI GetMethod
- 22. PropertyInfo özelliklerinden yararlanın PropertyInfo
- 23. Ayar C özelliklerinden Lua
- 24. "Bu" işaretçisi RTTI etkin mi?
- 25. Başka dizideki nesnelerin özelliklerinden dizi oluşturma
- 26. RTTI Kullanarak Değişken Adı Al
- 27. Bileşenimin özelliklerini Object Inspector'da nasıl gruplandırırım?
- 28. L SDK özelliklerinden bazılarını kullanamazsınız
- 29. Json.NET İlkel Türler - Double
- 30. Taşıyıcı, undoMove'dan nasıl ayırt edilir?
Eh, bir tarih/saat daima çift kesir kısmı – Marco
(bir gün bir parçası olarak) dakika ve saniye temsil ederken hangi tamsayı kısmı günleri temsil Bunun bir anlamak teknik olarak çifte, fakat TDTI'yi orijinal olarak – Barry