Önceden ne olduğunu bilmeden D2010'daki bir nesnenin üye değişkenlerini yinelemenin bir yolu var mı?Yineleme üye değişkenleri
cevap
Evet, Delphi 2010 veya sonraki sürümünü kullanıyorsanız. Bir nesnenin alanları, yöntemleri ve özellikleri hakkında bilgi almak için genişletilmiş RTTI'yı kullanabilirsiniz. Basit versiyon:
procedure GetInfo(obj: TObject);
var
context: TRttiContext;
rType: TRttiType;
field: TRttiField;
method: TRttiMethod;
prop: TRttiProperty;
begin
context := TRttiContext.Create;
rType := context.GetType(obj.ClassType);
for field in rType.GetFields do
;//do something here
for method in rType.GetMethods do
;//do something here
for prop in rType.GetProperties do
;//do something here
end;
gerekli nesneler RTTI
biriminde bulunabilir.
Delphi'nin önceki sürümlerinde, bazı özellik ve yöntemlerle ilgili bazı bilgileri edinebileceğiniz bazı daha sınırlı RTTI var, ancak bu kadarını yapamaz.
Yöntemler/alanlar/özellikler yayınlanmak zorunda mıdır yoksa normal olabilir mi? –
@John: Varsayılan olarak, genişletilmiş RTTI tüm alanlar ve "public" veya "yayınlandı" özellikleri ve yöntemleri için oluşturulur. Bu, '{$ RTTI} 'derleyici yönergesi ile yazdığınız kodda değiştirilebilir, ancak bunların değiştirilmiş sürümlerini kullanmadıkça standart kütüphaneler için oldukça fazla pişirilir. (Mümkün, fakat resmen Embarcadero tarafından cesaretlendirildi.) –
Hmm, Borland RTL'nin yeniden inşasına doğru oldukça arkadaş canlısıydı, politikaları yakın zamanda değiştirdiler mi? –
- 1. Korumalı statik üye değişkenleri
- 2. statik değişken üye değişkenleri?
- 3. Yazma-üye veya çift tırnak içinde üye değişkenleri nasıl genişletilir?
- 4. Python nesnelerine yeni üye değişkenleri ekleniyor mu?
- 5. Statik üye değişkenleri nesne boyutunu nasıl etkiler?
- 6. Kod kullanırken özel/korunan üye değişkenleri için Kod Tamamlama()
- 7. Neden [=] bir lambda üye değişkenleri değiştirmek için kullanılabilir?
- 8. üye
- 9. Yineleme
- 10. yineleme
- 11. yineleme
- 12. yineleme/
- 13. Neden üye olmayan bir üye değişkeni üye işlevinde kullanabilirim? Örneğin
- 14. jquery alt öğelerdeki yineleme yineleme
- 15. AngularJS Yineleme yineleme kapsamı nesnesi
- 16. Üye python'da tek üyeli kümeden nasıl çıkarılır?
- 17. TypeScript geçersiz kılınmış üye, özgün üye
- 18. javascript Üzerinden Yineleme Yineleme ng-yineleme kullanılarak eşleştirilmesi
- 19. Statik üye,
- 20. Undocumented üye
- 21. Örnek üye,
- 22. Parallel.ForEn fazla sayıda öğeyi koleksiyonda yineleme Yineleme
- 23. Scala listesi yineleme performansı
- 24. Nokta (yineleme)
- 25. yineleme arayüzleri
- 26. yineleme kez
- 27. Java Yineleme
- 28. yineleme Python
- 29. LaTeX'te yineleme
- 30. python yineleme
Delphi'nin hangi sürümünü kullanıyorsunuz? – RRUZ
Delphi 2010 kullanıyorum. –