Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Beispiel für Attribut an einem Methoden/Funktionsparameter

  Alt 2. Dez 2022, 12:06
Bei direktem Aufruf, ist ein gezieltes if Param=nil oder ein Assert(Assigned(Patem) garantiert einfacher und vor allem auch "optimaler".

Aber z.B. für Schnittstellen, wo Funktionsaufrufe weitergeleitet oder Events mit externen/ungeprüften Parameter aufgerufen werden ...
Nja, am Ende wäre auch das die direkte Prüfung einfacher, aber vermutlich in den Zwischenebenen das RTTI auch nutzbar.


Wenn der Methoden-Aufruf nicht via RTTI vorgenommen würde und du bereits Deklaration und die Parameter in RTTI-freundlicher Form vorliegen,
* mußt du erstmal die Definition der Methode selbst reingeben oder aus der Codeposition versuchen zu finden (bei Events hat du den Typ bereits in der Hand)
* und dann die Parameter auch noch bekommen
* * mitten im Code nahezu unmöglich ... aber beim / vor dem Aufruf oder als RTTI-Hook im Aufruf ging es aber

TRttiProcedureType/TRttiMethodType/TRttiMethod.Invoke oder mit dem TVirtualMethodInterceptor



In diesem Fall würde ich dir empfehlen, dieses [NotNil] bzw. ein [Check(...)] als FeatureRequst dem Hersteller zu unterbreiten
damit der Compiler automatisiert eine if Assigned einfügt, ähnlich wie bei [Weak] , [Volatile] und [Ref] oder den Index- und Überlaufprüfungen durch impliziten zusätzlichen Code.
$2B or not $2B

Geändert von himitsu ( 2. Dez 2022 um 12:14 Uhr)
  Mit Zitat antworten Zitat