E2178 Dynamische und Botschaftsmethoden sind im OLE-Automatisierungbereich nicht erlaubt (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Sie haben unzulässigerweise eine dynamische Methode oder eine Botschaftsmethode in einen Automatisierungsbereich einer Klassendeklaration gestellt.


program Produce;

  type
    Base = class
    automated
      procedure DynaMethod; dynamic;
      procedure MessageMethod(VAR msg : Integer); message 151;
    end;

    procedure Base.DynaMethod;
    begin
    end;

    procedure Base.MessageMethod;
    begin
    end;

begin
end.

Es ist nicht möglich, eine Deklaration einer dynamischen Methode oder einer Botschaftsmethode in den OLE-Automatisierungsabschnitt einer Klasse zu stellen. Aus diesem Grunde erzeugen beide Methodendeklarationen in diesem Quelltext einen Fehler.


program Solve;

  type
    Base = class
      procedure DynaMethod; dynamic;
      procedure MessageMethod(VAR msg : Integer); message 151;
    end;

    procedure Base.DynaMethod;
    begin
    end;

    procedure Base.MessageMethod;
    begin
    end;

begin
end.

Dieser Fehler kann auf verschiedene Arten aus Ihrem Programm entfernt werden. Als Erstes könnten Sie alle Deklarationen, die diesen Fehler auslösen, aus dem Automatisierungsabschnitt herausbringen, wie dies in diesem Beispiel geschehen ist. Eine andere Möglichkeit besteht darin, die Attribut dynamic oder message der Methode zu entfernen; dadurch wird natürlich nicht das gewünschte Verhalten der Methode erzielt, aber der Fehler ist behoben.