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.