Prozedurale Variable im Free Pascal mode

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
braunbär
Beiträge: 363
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Prozedurale Variable im Free Pascal mode

Beitrag von braunbär »

Im Mode Delphi schreibe ich einfach

Code: Alles auswählen

  B.OnClick:=TDialog.BitBtnClick;
Wie muss der Befehl in Free pascal aussehen? Aus der Online-Hilfe werde ich auch nicht klug.
Ich dachte, man muß ein @ vorsetzen, wenn man den Prozedurzeiger und nicht den Prozeduraufruf meint, aber

Code: Alles auswählen

  B.OnClick:=@TDialog.BitBtnClick;
kompiliert auch nicht. Da bekomme ich die Fehlermeldung laut Anhang:
Dateianhänge
Fehlermeldung.JPG
Fehlermeldung.JPG (21.86 KiB) 317 mal betrachtet

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2346
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Prozedurale Variable im Free Pascal mode

Beitrag von m.fuchs »

Du verweist auf die Methode BitBtnClick von TDialog. Diese Methode müsste eine Klassenmethode sein, damit das funktioniert. Ich vermute mal, dass es sich aber um eine normale Methode handelt. Dann muss der Zeiger aber auf die Methode einer Instanz von TDialog zeigen. Zum Beispiel so:

Code: Alles auswählen

var
  Dialog1: TDialog;
  (* ... *)
procedure BindOnClickToB;
begin
  (* ... *)
  B.OnClick := @Dialog1.BitBtnClick;
  (* ... *)
end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

braunbär
Beiträge: 363
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Prozedurale Variable im Free Pascal mode

Beitrag von braunbär »

Danke, so funktioniert es. Auf die Lösung wäre ich nicht so bald gekommen.

Antworten