E2080 La procédure DISPOSE nécessite un destructeur (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Ce message d'erreur est émis lorsqu'un identificateur spécifié dans la liste de paramètres de Dispose n'est pas un destructeur.



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);        (*<-- Message d'erreur ici*)
end.

Dans cet exemple, nous avons passé le constructeur à Dispose par erreur.



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.

La solution consiste à passer un destructeur à Dispose ou à éliminer le deuxième argument.