AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Inkompatible Typen: 'TPathListEvent' und 'Procedure'
Thema durchsuchen
Ansicht
Themen-Optionen

Inkompatible Typen: 'TPathListEvent' und 'Procedure'

Ein Thema von Delbor · begonnen am 6. Jul 2017 · letzter Beitrag vom 6. Jul 2017
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Inkompatible Typen: 'TPathListEvent' und 'Procedure'

  Alt 6. Jul 2017, 14:38
Delphi-Version: XE8
Hi zusammen

Irgendwie haben die Delphi-Events scheinbar etwas gegen mich. Zurzeit führe ich solch ein Ding neu ein. Dabei ist das Fehlen von Const-Deklarationen und ähnlichem schon Routine - will heissen, vor allem anderen untersuche ich mal die gemachten Deklarationen. Und das sollte es dan auch gewesen sein.
Sollte!!
Denn bei der Zuweisung des Eventhandlers zum Event (in Mainform.Create)
Delphi-Quellcode:
  FDMySQLDml.OnStartCategoryQuery := Self.DoOnStartCategoryQuery; // <== Keine Probleme
  Self.DlgFrameContainer1.PathFinderFrame1.OnPathListEvent := TFDMySQLDml.DoPathlistEvent;
meckert Delphi:
Zitat:
[dcc32 Fehler] CM_FirstUnit.pas(562): E2010 Inkompatible Typen: 'TPathListEvent' und 'Procedure''
Ich hab mir die Strukturen der Event-Deklaration und Implemetierung mal aufgeschrieben:
Zitat:
Deklarationen des Events:

Der Typ des Events im Pathfinderframe:
TPathListEvent = procedure(Sender:TObject; const Ordner: String; const Pathlist: TStringList) of Object;

Das private Feld des Events :
FOnPathListEvent: TPathListEvent;

Das Public-Property des Events
property OnPathListEvent: TPathListEvent read FOnPathListEvent write FOnPathListEvent;

Der Event wird gefeuert :
if Assigned(OnPathListEvent) then
OnPathListEvent(Sender, Ordner, Pathlist);

Deklaration des Eventhandlers:
procedure DoPathlistEvent(Sender: TObject; const Ordner: String;const Pathlist: TStringlist);

Implementation des Eventhanlers: (Procedurekopf)
procedure TFDMySQLDml.DoPathlistEvent(Sender: TObject; const Ordner: String;
const Pathlist: TStringlist);

Die Zuweisung des Eventhandlers an das Event im Mainform.Create:;
Self.DlgFrameContainer1.PathFinderFrame1.OnPathLis tEvent := TFDMySQLDml.DoPathlistEvent;
In dieser Oncreate sind mehrere Eventzuweisugnen mit identischem Aufbau vorhanden - umso weniger verstehe ich die Fehlermeldung...
Was ist da falsch?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#2

AW: Inkompatible Typen: 'TPathListEvent' und 'Procedure'

  Alt 6. Jul 2017, 14:50
Hmm..

könnte es sein, dass Du nicht 'DoPathlistEvent' einer Object-Instanz zuweist, sondern der Klasse (PathFinderFrame1.OnPathListEvent := TFDMySQLDml.DoPathlistEvent
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Inkompatible Typen: 'TPathListEvent' und 'Procedure'

  Alt 6. Jul 2017, 14:50
Delphi-Quellcode:
begin
  Self.DlgFrameContainer1.PathFinderFrame1.OnPathListEvent := TFDMySQLDml.DoPathlistEvent;
end;
wird zu

Delphi-Quellcode:
var
  MyInstance: TFDMySQLDml; // Oder besser oben in der Klassendefinition als Member
begin
  MyInstance := TFDMySQLDml.Create;
  Self.DlgFrameContainer1.PathFinderFrame1.OnPathListEvent := MyInstance.DoPathlistEvent;
end;
Zeit fürn Kaffee Delbor!
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Inkompatible Typen: 'TPathListEvent' und 'Procedure'

  Alt 6. Jul 2017, 15:02
Hi zusammen

Tja, warum in die Ferne schweifen...

Zitat:
var
MyInstance: TFDMySQLDml; // Oder besser oben in der Klassendefinition als Member
begin
MyInstance := TFDMySQLDml.Create;
Self.DlgFrameContainer1.PathFinderFrame1.OnPathLis tEvent := MyInstance.DoPathlistEvent;
end;
Oder anders: mit einer Zuweisung an eine Instanz (FDMySQLDml) statt an eine Klasse(TFDMySQLDml) wird ein Schuh draus...

Vielen Dank an euch beide!

Gruss
Delbor

PS:
Zitat:
Zeit fürn Kaffee Delbor!
Doch, ich denke, Kaffee anstelle von T(ee) wäre besser!
Aber im Ernst: Das mit dem führenden 'T' passiert mir noch öfters. Von daher sollte ichs eigentlich wissen.
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 6. Jul 2017 um 15:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz