E2266 Nur eine Methode aus einer Gruppe überladener Methoden darf 'published' sein (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Nur ein Element aus einer Gruppe überladener Funktionen kann als published deklariert werden, weil die für Prozeduren generierten Laufzeit-Typinformationen (RTTI) nur den Namen enthalten.
(*$M+*) (*$APPTYPE CONSOLE*) program Produce; type Base = class published procedure p1(a : integer); overload; procedure p1(a : boolean); overload; end; Extended = class (Base) procedure e1(a : integer); overload; procedure e1(a : boolean); overload; end; procedure Base.p1(a : integer); begin end; procedure Base.p1(a : boolean); begin end; procedure Extended.e1(a : integer); begin end; procedure Extended.e1(a : boolean); begin end; end.
Im hier gezeigten Beispiel sind die beiden überladenen p1-Funktionen in einem als published deklarierten Abschnitt enthalten, was nicht zulässig ist.
Da außerdem der Status $M+ verwendet wird, beginnt die Klasse Extended mit einer als published deklarierten Sichtbarkeit, so dass der Fehler auch bei dieser Klasse auftritt.
(*$M+*) (*$APPTYPE CONSOLE*) program Solve; type Base = class public procedure p1(a : integer); overload; published procedure p1(a : boolean); overload; end; Extended = class (Base) public procedure e1(a : integer); overload; procedure e1(a : boolean); overload; end; procedure Base.p1(a : integer); begin end; procedure Base.p1(a : boolean); begin end; procedure Extended.e1(a : integer); begin end; procedure Extended.e1(a : boolean); begin end; end.
Die Lösung in diesem Fall besteht darin, sicherzustellen, dass nicht mehr als ein Element einer Gruppe von überladenen Funktionen in einem als published deklarierten Abschnitt enthalten ist. Am einfachsten erreichen Sie dies, indem Sie die Sichtbarkeit als public, protected oder private deklarieren.