E2080 Procedure DISPOSE needs destructor (Delphi)
Go Up to Error and Warning Messages (Delphi)
This error message is issued when an identifier given in the parameter list to Dispose is not a destructor.
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); (*<-- Error message here*) end.
In this example, we passed the constructor to Dispose by mistake.
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.
The solution is to either pass a destructor to Dispose, or to eliminate the second argument.