(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
Delphi 11 Alexandria
|
Re: prozedur aufruf und sender
25. Okt 2003, 20:33
Moin Armin,
der Knackpunkt ist, dass die Prozedur einer Eigenschaft zugewiesen ist, die die Adresse einer Methode erwartet (in diesem Falle vom Typ TNotifyEvent). Dadurch geht der Compiler davon aus, dass die Adresse in der Eigenschaft die einer Methode ist, und übergibt beim Aufruf zwei Parameter. Wenn der Compiler auf die Deklaration Prozedur trifft, "weiss" er nichts davon, dass diese später als Methode aufgerufen wird, und erzeugt den Code wie es bei einer Prozedur üblich ist.
Das die Zuweisung einer Prozeduradresse erfolgt ist, ist ja nur dem Trick mit den @ zu verdanken. Ohne @ würde der Compiler das ja gar nicht zulassen. Deklariert man jetzt die Prozedur so, dass die Parameteranzahl passt funktioniert es anschliessend wie erwartet, es sieht nur unüblich aus.
Wenn man es genau betrachet, funktioniert der Trick auch nur, weil Borland darauf verzichtet hat für die Zuweisung von Ereignissen eine Set Methode einzubauen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
|