System.Rtti.Invoke
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.