Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Geerbter Getter für lokale Objekt-Konstante? (https://www.delphipraxis.net/205007-geerbter-getter-fuer-lokale-objekt-konstante.html)

Andreas13 23. Jul 2020 18:47

AW: Geerbter Getter für lokale Objekt-Konstante?
 
Ihr führt mir immer wieder den Unterschied zwischen einem Amateur (= mir) und den Profis (= IHR) vor Augen. Habe stets viel von Euch gelernt: Danke!
Gruß, Andreas

Andreas13 24. Jul 2020 14:42

AW: Geerbter Getter für lokale Objekt-Konstante?
 
Sorry, ich bin schon wieder...
Erst soeben ist mir aufgefallen, daß bei der Zuweisung
Delphi-Quellcode:
attr := FuncInfoAttribute.FindAttribute(ClassType);
der String-Teil des Attributs „auf dem Weg“ verloren geht und in der Variablen attr immer ein Leerstring steht. Obwohl das Result der
Delphi-Quellcode:
class function FuncInfoAttribute.FindAttribute(Source: TClass): FuncInfoAttribute;
korrekterweise den String und den Integer enthält. In den Gettern kommt lediglich der Integer an, der String ist jedoch verschwunden. Kann das etwa mit dem auskommentierten
Delphi-Quellcode:
TRttiContext.KeepContext;
zusammenhängen?
Ich bin etwas ratlos...
Gruß, Andreas

Uwe Raabe 24. Jul 2020 14:57

AW: Geerbter Getter für lokale Objekt-Konstante?
 
Zitat:

Zitat von Andreas13 (Beitrag 1470305)
In den Gettern kommt lediglich der Integer an, der String ist jedoch verschwunden. Kann das etwa mit dem auskommentierten
Delphi-Quellcode:
TRttiContext.KeepContext;
zusammenhängen?

Ja, das war der eigentliche Grund für das KeepContext. Die Ursache konnte ich ad hoc auch nicht ermitteln.

Als Workaround kannst du eine globale Variable vom Typ TRTTIContext anlegen. Alternativ auch als class var in einem class helper, dann braucht man auch keinen lokalen TRTTIContext mehr in FindAttribute:
Delphi-Quellcode:
type
  TCustomAttributeHelper = class helper for TCustomAttribute
  public class var
    Context: TRttiContext;
  end;

Andreas13 24. Jul 2020 15:05

AW: Geerbter Getter für lokale Objekt-Konstante?
 
Danke Uwe für Deine schnelle Hilfe!
Die Globale Variable
Delphi-Quellcode:
VAR
Context: TRttiContext;
funktioniert einwandfrei!
Viele Grüße, Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr.
Seite 2 von 2     12   

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