System.Rtti.Invoke

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function Invoke(CodeAddress: Pointer; const Args: TArray<TValue>;
CallingConvention: TCallConv; AResultType: PTypeInfo; IsStatic: Boolean; IsConstructor: Boolean): TValue;

C++

extern DELPHI_PACKAGE TValue __fastcall Invoke(void * CodeAddress, const System::DynamicArray<TValue> Args, System::Typinfo::TCallConv CallingConvention, System::Typinfo::PTypeInfo AResultType, bool IsStatic = false, bool IsConstructor = false);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public
System.Rtti.pas
System.Rtti.hpp
System.Rtti System.Rtti

Beschreibung

Ruft eine Methode dynamisch auf.

Mit Invoke rufen Sie zur Laufzeit eine Methode auf. Invoke ist hilfreich, wenn die tatsächliche Methode zur Compilierzeit nicht bekannt ist, sondern erst zur Laufzeit ermittelt wird.

Die folgende Tabelle führt die Parameter der Routine Invoke auf.



Parameter Beschreibung

CodeAddress

Die Adresse der aufzurufenden Methode.

Args

Ein Array mit TValue-Records. Jeder Record speichert einen Parameter, der an die Methode übergeben wird.

CallingConvention

Die zum Aufrufen der Methode verwendete Aufrufkonvention.

AResultType

Die Typinformationen des Ergebnistyps der Methode.



Invoke gibt einen TValue-Record zurück, der das Ergebnis der aufgerufenen Methode enthält.

Abhängig vom Typ der aufgerufenen Methode muss das Array Args den folgenden Regeln entsprechen:

  • Bei Instanzmethoden muss das erste Element im Array Args der Zeiger auf die Instanz sein.
  • Bei Interface-Methoden muss das erste Element im Array Args die Interface-Referenz sein.
  • Bei Klassenmethoden muss das erste Element im Array Args die Klassenreferenz sein.
  • Für statische Methoden und globale Routinen ist keine spezielle Vorgehensweise erforderlich.

Siehe auch