If you are deriving from TObject, It's not neccesary to call Inherited;

[pascal]
{************************************************* ***************************
TOBJECT
************************************************** **************************}

constructor TObject.Create;

begin
end;

destructor TObject.Destroy;

begin
end;
[/pascal]

As you see, both the constructor and the Destructor don't contain anything, so there's no reason to do it (This is source as used by FPC and Lazarus).

However, I feel that it's good practice to do so. If you ever decide to let your class derive from something else, the "Inherited" calls DO matter. I can call inherited in the constructor of TObject-descendants without any problems (In delphi), so I do it all the time.

The problem might be caused by the fact that TObject.Create is not virtual. Only virtual methods may be overridden. It's pretty weird that this isn't mentioned in the error. It probably should be something like "Cannot override. TObject.Create is not virtual".

In the end, I'd just leave it out for TObject-descendants. If you ever want to derive class B from class A, you should make A.Create virtual, so you can override it in B.

Hope this helps.