I think that's a bad idea: " destructor Destroy; reintroduce;". You should use "DESTRUCTOR Destroy; OVERRIDE;". Destructor should be virtual always. Note that compiler might do some magic with constructor and destructor (I.e. calling parent constructor or destructor if you forgot to call them). I'm not sure if reintroducing the destructor broke that magic, but I don't like to play that way.
BTW, good idea to use ARRAY instead of pointer to store lists. Pointers can be used in Pascal almost like in C, but dynamic arrays are much better.
Bookmarks