[fpc-pascal]TCollection question

James Mills prologic at daisy.ods.org
Sun Jul 6 17:40:35 CEST 2003


On Sun, Jul 06, 2003 at 05:31:59PM +0200, Marco van de Voort wrote:
> > On Sun, Jul 06, 2003 at 05:11:17PM +0200, Marco van de Voort wrote:
> > > > which hold a dynamic array of TNick ... Is this what TList already does
> > > > (if so I'm wasting my time writing my own code...) ?
> > > 
> > > Pretty much yes, but in a class wrapper. You can add and remove items,
> > > iterate through them etc.  Maybe you can derive a class from TList to
> > > customize it a bit.
> > 
> > However TList by itself would work though ?
> 
> Basically yes. But derive it anyway, in case you want to extend it later.

In this case then as I've both read your replies and the webpage about
TList I shall extend it :) That'll probably be the best option. Right ?

Thanks for your prompt help, I dunno why I'm coding at 0140 in the
bloody morning but anyway :)

cheers
James

>  
> > > - you yourself have to make sure that elements are properly freed, so
> > >    when deleting object A, get a reference to it, delete it from the list, 
> > >    and then free the object. (however that can be automized in the class
> > >    warpper)
> > Is this all done and automated in TList ?
> 
> No. So you have to that yourself. This because TList can also store pointers
> to records, which don't have to be finalised. So deallocation is still
> manual.
> 
> But it is trivial. Assume you want to delete entry 3, assuming that variable
> TheList is the TList:
> 
> var t : MyObjectType
> 
> t:=MyObjectType(TheList[3]);
> TheList.delete(3);
> t.free;
> 
> You can solve it like this: (untested)
> 
> type tmyTList = class TList
> 		  public
> 	            procedure DeleteCompletely(index :Integer);
> 		  end;
> 
> procedure tmyTList.DeleteCompletely(index: Integer);
> 
> var t : MyObjecType;
> 
> begin
>   t:=MyObjectType(Items[3]);
>   delete(3);
>   if t<>NIL
>    t.free;
> end; 
> 
> See TList as a versatile baseclass to quickly build a dedicated, very
> easy to use container on top of.
> 
> > > There is FCL documentation somewhere (and it will be in the next full 
> > > release), but I couldn't find a recent version so fast.
> > > 
> > > So I put down a very old version (April 2002) on the web here:
> > > 
> > > www.stack.nl/~marcov/fcl.pdf
> > 
> > I think it's here also in html format:
> > http://www.nl.freepascal.org/docs-html/fcl/classes/tlist.html
> 
> That's the place I meant yes.
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal

-- 
-
- James Mills
Zero Defect Software Engineers Group - ZDSEG




More information about the fpc-pascal mailing list