Delphi – E2017 Pointer type required 

When you use the dereferencing operator ” on an operand that isn’t a pointer, and in a very specific instance, when the second operand in a ‘Raise Exception> at address>’ statement isn’t a pointer, you’ll get this error message.

program Produce;
var
  C: TObject;
begin
  C^.Destroy;
end.

Using the dereferencing operator on class types at the source level is forbidden, despite the fact that class types are internally implemented as pointers to the real information. It’s also not required; the compiler will automatically dereference wherever it’s appropriate.

program Solve;
var
  C: TObject;
begin
  C.Destroy;
end.

Simply remove the dereferencing operator, and the compiler will take care of the rest.