Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie finde ich per RTTI eine Klassenvariable? (https://www.delphipraxis.net/190319-wie-finde-ich-per-rtti-eine-klassenvariable.html)

Der schöne Günther 22. Sep 2016 18:52

Delphi-Version: 10 Seattle

Wie finde ich per RTTI eine Klassenvariable?
 
Folgender Code
Delphi-Quellcode:
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.
findet beide Methoden aber nur die Variable "someField", nicht aber "someClassField". Woran liegt das? Wie kann ich es finden?

himitsu 23. Sep 2016 10:02

AW: Wie finde ich per RTTI eine Klassenvariable?
 
Vielleicht hat der Compiler ja das ungenutzte Feld wegoptimiert? :stupid:

Stevie 23. Sep 2016 10:11

AW: Wie finde ich per RTTI eine Klassenvariable?
 
Ich bin mir sehr sicher, dass es für class vars keine RTTI gibt.

Der schöne Günther 23. Sep 2016 18:26

AW: Wie finde ich per RTTI eine Klassenvariable?
 
Das ist sehr schade.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz