Bin gerade am Upgraden meiner Projekte auf D12 und dabei auf einen seltsamen Fehler gestossen. Alle Events die einen Type verewenden, der als type x=y definiert ist, erzeugen nun in der
IDE den Fehler "The itrTaskListNodeLoaded method referenced by itrTaskList.OnNodeLoaded has an incompatible parameter list. Remove the reference?". Was ist hier denn nun schon wieder los und wie kann ich das beheben?
Das Folgende ist ein Beispiel, passiert aber auch bei andereren Komponenten, z.B. THtmlViewer, wo Type ThtString=string gesetzt wird.
Folgender Code stammt aus einer verwendeten Komponente:
Delphi-Quellcode:
type
TBaseInfoNode = dcntree.TDCTreeNode;
TNodeLoadedEvent = procedure (Sender : TObject; Node : TBaseInfoNode) of object;
In D11 und älter wurde damit folgendes Event erzeugt:
Delphi-Quellcode:
procedure TfrmMain.itrGroupsNodeLoaded(Sender: TObject; Node: TDCTreeNode);
begin
end
D12 erzeugt nun daraus folgendes:
Delphi-Quellcode:
procedure TfrmMain.itrTaskListNodeLoaded2(Sender: TObject; Node: TBaseInfoNode);
begin
end;
Die
IDE kommt hiermit nicht mehr zurecht und erzeugt den obigen Fehler, sobald ich kompilieren will. Wenn ich da sage, dass er die Referenz nicht entfernen soll, kompilliert das Programm und alles scheint zur Runtime normal ohne Fehler zu laufen. Die Event funktinoierenren also. Wo liegt hier der Fehler? Ist das ein Bug der
IDE oder kann ich die Type Definition irgenwie anders angeben, damit die
IDE wieer checkt, dass TDCTreeNode und TBaseInfoNode das selbe sind?