![]() |
Delphi-Version: 10 Seattle
Wie finde ich per RTTI eine Klassenvariable?
Folgender Code
Delphi-Quellcode:
findet beide Methoden aber nur die Variable "someField", nicht aber "someClassField". Woran liegt das? Wie kann ich es finden?
program Project15;
{$APPTYPE CONSOLE} {$R *.res} uses System.Rtti; type TMyClass = class public var someField: Integer; public class var someClassField: Integer; public procedure someProcedure(); virtual; abstract; public class procedure someClassProcedure(); virtual; abstract; end; var ctx: TRttiContext; field: TRttiField; method: TRttiMethod; begin TMyClass.Create(); // Damit der Compiler es nicht weg-optimiert... ctx := TRttiContext.Create(); WriteLn('fields:'); for field in ctx.GetType(TMyClass).GetFields() do WriteLn(field.Name); WriteLn(sLineBreak, 'methods:'); for method in ctx.GetType(TMyClass).GetDeclaredMethods() do WriteLn(method.Name); readln; end. |
AW: Wie finde ich per RTTI eine Klassenvariable?
Vielleicht hat der Compiler ja das ungenutzte Feld wegoptimiert? :stupid:
|
AW: Wie finde ich per RTTI eine Klassenvariable?
Ich bin mir sehr sicher, dass es für class vars keine RTTI gibt.
|
AW: Wie finde ich per RTTI eine Klassenvariable?
Das ist sehr schade.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz