Funktions- und Methodenzeiger OBJECT PASCAL IM DETAIL

Object Pascal im Detail - Funktions- und Methodenzeiger www.delphi-treff.de 107 if FFelder[ 1 , 1 ] is TTurm then ... Wenn wir uns nun sicher sind, einen Turm in der Hand zu haben, müssen wir dem Compiler noch mitteilen, dass e das O jekt i ei e Tu u a del soll, da it die Methode „Rochade aufge ufe e de ka . Das a ht a it de “ hlüssel o t „as : FFelder[ 1 , 1 ] as TTurm.Rochade; Ü li he eise e de „is u d „as i ht ge ei sa e e det, so de it „is gep üft u d da ha t gecastet: if FFelder[ 1 , 1 ] is TTurm then FFelder[ 1 , 1 ] as TTurm.Rochade; Ode u it „as gea eitet, e a si h e eits si he ist, ei e esti te Klasse zu ha e .

4.9. Funktions- und Methodenzeiger

Funktionen und Prozeduren können selbst in Variablen gespeichert werden bzw. ein Verweis auf sie. Somit ist es möglich, einer Funktion eine andere Funktion als Parameter zu übergeben. type TMeineFunktion = function: Integer; In diesem Fall haben die Funktionen oder Prozeduren keinen Namen, sondern bestehen aus dem Schlüsselwort function oder procedure, bei Bedarf gefolgt von Parametern in runden Klammern und einem Rückgabewert. Ha delt es si h u Methode , folgt o h „of o je t : TMeineMethode = procedure of object; Praktischer Nutzen der Sache: Man kann somit eine Ereignisbehandlungsroutine erstellen und erst zur Laufzeit einem Objekt einer Komponente zuordnen. Beispiel: Object Pascal im Detail - Funktions- und Methodenzeiger www.delphi-treff.de 108 type TMyOnClick = procedureSender: TObject of object; TMyForm = classTForm procedure MyButtonClickEventSender: TObject; end; var MyOnClick: TMyOnClick; MyForm: TMyForm; ... MyOnClick := MyForm.MyButtonClickEvent; Die OnClick-Events der Komponenten haben ebenfalls einen Methodenzeiger als Typ, den gleichen wie TMyOnClick im Beispiel. Deshalb ist es möglich, z.B. einem Button zur Laufzeit eine Methode mit dem gleichen Parameter zuzuweisen. Variablen vom Typ einer FunktionProzedur beinhalten die Speicheradresse, also einen Zeiger auf die Routine. Bei Methoden werden zwei Zeiger gespeichert: die Adresse der Methode und eine Referenz auf die Instanz. Object Pascal im Detail - Exceptions www.delphi-treff.de