E2080 Prozedur DISPOSE benötigt einen Destruktor (Object Pascal)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Object Pascal) - Index

Diese Fehlermeldung wird angezeigt, wenn Sie in der Parameterliste einen Bezeichner an Dispose übergeben, der kein Destruktor ist.


program Produce;

type
  PMyObject = ^TMyObject;
  TMyObject = object
  F: Integer;
  constructor Init;
  destructor Done;
  end;

constructor TMyObject.Init;
begin
  F := 42;
end;

destructor TMyObject.Done;
begin
end;

var
  P: PMyObject;

begin
  New(P, Init);
  (*...*)
  Dispose(P, Init);        (*<-- Hier die Fehlermeldung*)
end.

Dispose wurde versehentlich mit dem Konstruktor anstelle des Destruktors aufgerufen.


program Solve;

type
  PMyObject = ^TMyObject;
  TMyObject = object
  F: Integer;
  constructor Init;
  destructor Done;
  end;

constructor TMyObject.Init;
begin
  F := 42;
end;

destructor TMyObject.Done;
begin
end;

var
  P: PMyObject;

begin
  New(P, Init);
  Dispose(P, Done);
end.

Übergeben Sie entweder den Destruktor oder kein zweites Argument.