RAD Studio (Common)
ContentsIndex
PreviousUpNext
E2017: Pointer type required (Delphi)

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.

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!