E2079 Procedure NEW needs constructor (Delphi)

From RAD Studio

Go Up to Error and Warning Messages (Delphi)

This error message is issued when an identifier given in the parameter list to New is not a constructor.


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, Done);              (*<-- Error message here*)
end.

By mistake, we called New with the destructor, not the constructor.


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);
end.

Make sure you give the New standard function a constructor, or no additional argument at all.