Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Eigene Prozedur zu Klasse hinzufügen
Regan - Sa 11.07.09 20:12
Titel: Eigene Prozedur zu Klasse hinzufügen
Moin,
irgendwie seh ich zur Zeit den Wald vor lauter Bäumen nicht mehr. Ich geb euch erstmal die nötigen Quelltexte:
Rezepteklasse
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type TListAdEvent = procedure(AName, ALastChange:String; AOK: Boolean);
TRezeptverwaltung = class private FAdToList: TListAdEvent; procedure SetAdToList(const Value: TListAdEvent); public property AdToList: TListAdEvent read FAdToList write SetAdToList; |
Das sollte erstmal klar sein. Jetzt will ich beim FormCreate der Form1 eine eigene Prozedur zuweisen. Wie muss ich die Prozedur denn deklarieren?
Ich habe es leider erfolglos so probiert:
Hauptform
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| type TMainForm = class(TForm)
private procedure ZurListeHinzufuegen(AName, ALastChange:String; AOK: Boolean);
procedure TMainForm.FormCreate(Sender: TObject); begin Rezepte := TRezeptverwaltung.Create(Application.ExeName); Rezepte.AdToList := ZurListeHinzufuegen; end; |
Ich wollte das eben so wie bei einem NotifyEvent machen, will aber nicht. Da kommt folgende Fehlermeldung:
Zitat: |
[Pascal Fehler] fMain.pas(189): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger' |
Wie muss es richtig gemacht werden? Würde mich über eine ausführliche Beschreibung freuen, warum das mit TNotifyEvent funktioniert, aber nicht mit meiner eigenen Prozedur.
MfG
Regan
jaenicke - Sa 11.07.09 20:17
In der Typdeklaration fehlt hinten ein of object. Erst dann ist es ein Methodenzeiger, das heißt ein Zeiger auf eine Methode eines Objekts. ;-)
Hintergrund: Du deklarierst einen Zeiger auf eine normale Prozedur, mit dem of object wird zusätzlich noch der Zeiger auf das Objekt mitgeführt, zu dem die Methode gehört. Sonst ginge da nämlich das Self nicht. ;-)
Regan - Sa 11.07.09 20:23
Achso 8) . Jetzt funktioniert es :D . Vielen Dank :zustimm: .
jaenicke hat folgendes geschrieben : |
Hintergrund: Du deklarierst einen Zeiger auf eine normale Prozedur, mit dem of object wird zusätzlich noch der Zeiger auf das Objekt mitgeführt, zu dem die Methode gehört. Sonst ginge da nämlich das Self nicht. ;-) |
OK, leuchtet ein. Ich habe auch grad nochmal bei TNotifyEvent nachgeschaut. Da steht das ja auch dahinter. Man lernt nie aus ;) .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!