[fpc-pascal] HTTPRoute.pas and TRouteObject

Michael Van Canneyt michael at freepascal.org
Sat Feb 10 08:36:41 CET 2018



On Sat, 10 Feb 2018, Kevin Jesshope wrote:

> Hi,
>
> Working on a standalone web project using the new routing. I have a
> class descended  from TRouteObject.
>
> My problem is that the constructor cannot be marked override so it is
> not called when the class is created by HTTPRouter.
>
> Adding an empty virtual TRouteObject.create resolves this.

I have added a virtual constructor in rev. 38180

>
> Is this a bad idea? Am I missing something?

It's not a bad idea, but IMHO unnecessary. The object is created,
HandlRequest is called and then destroyed. If you need the constructor to
create extra things,  you can just as well do this in HandleRequest.

To separate the 'initialization' from the actual handling of the request
you can do

Procedure TMyRouteObject.HandleRequest(aRequest : TRequest; aResponse : TResponse);

begin
   InitObject;
   // Do whatever;
end;

and in the destructor you then clean up. If you want to create a hierarchy
of objects, yoy make InitObject virtual, override it in descendents and
you're all set;

But I've added a virtual constructor to TRouteObject, save you some hassle ;)

Michael.



More information about the fpc-pascal mailing list