E2017 Pointer type required (Object Pascal)
This error message is given when you apply the dereferencing operator '^' to an operand that is not a pointer, and, as a very special case, when the second operand in a 'Raise <exception> at <address>' statement is not a pointer.
program Produce; var C: TObject; begin C^.Destroy; end.
Even though class types are implemented internally as pointers to the actual information, it is illegal to apply the dereferencing operator to class types at the source level. It is also not necessary - the compiler will dereference automatically whenever it is appropriate.
program Solve; var C: TObject; begin C.Destroy; end.
Simply leave off the dereferencing operator - the compiler will do the right thing automatically.