[fpc-pascal]TCollection question
James Mills
prologic at daisy.ods.org
Mon Jul 7 06:48:36 CEST 2003
On Sun, Jul 06, 2003 at 10:38:28PM +0100, Matt and Lisa Emson wrote:
> Why not use a TObjectList?? IIRC that is available. In unit Contnrs.pas. It
> will do a lot more for you. It can 'own' the objects, and therefore free you
> from needing to manage them.
>
> Simple descendent (typed at speed, with no testing):
>
> N.B. This is a WRAPPER because it allows the programmer more control over
> the interface to the class. However a descendent would work the same way
> pretty much. You'd probably just alter the 'Add' to 'AddXXX' so as to not
> clash with 'Add' from TList. Otherwise you would hide the method and make in
> unavailable. This wrapper is really usefull... I use this basic design all
> the time!!
A question about your basic-design and using TList (and descandents in
general)...
Could I not do this:
TMyList = class(TList);
.
.
.
And thereby extend the basic TList class into a custom List ?
The way you use TList is as a private variable in a generic class.
cheers
James
>
> TMyListItemClass = class; {your class to store}
>
> TMyList = class
> private
> FList: TList;
> protected
> procedure SetItem( Index: integer; Value: TMyListItemClass);
> function GetItem(Index: integer): TMyListItemClass;
> public
> Constructor Create; virtual;
> Destructor Destroy; override;
>
> function Add(AItem: TMyListItemClass): integer;
> procedure Delete( AIndex: integer );
> function Count: integer;
>
> property Items[Index: integer]: TMyListItemClass read GetItem write
> SetItem;
> end;
>
> procedure SetItem( Index: integer; Value: TMyListItemClass);
> begin
> FList[Index] := Value;
> end;
>
> function GetItem(Index: integer): TMyListItemClass;
> begin
> Result := TMyListItemClass(FList[Index] );
> end;
>
> Constructor Create; virtual;
> begin
> FList := TList.Create;
> end;
>
> Destructor Destroy; override;
> begin
> {don't forget some code to empty list....!!!!}
> FList.Free;
>
> inherited;
> end;
>
> function Add(AItem: TMyListItemClass): integer;
> begin
> result := FList.Add(AItem);
> end;
>
> procedure Delete( AIndex: integer );
> begin
> FList.Delete(AIndex);
> end;
>
> function Count: integer;
> begin
> Result := FList.Count;
> end;
>
>
> ----- Original Message -----
> From: "James Mills" <prologic at daisy.ods.org>
> To: <fpc-pascal at lists.freepascal.org>
> Sent: Sunday, July 06, 2003 4:56 PM
> Subject: Re: [fpc-pascal]TCollection question
>
>
> > Actually Michael,
> >
> > Could you possibly spare 5 mins and give a really simple example of a
> > TList descandent ? I'm a tad confused here, (too slowly getting
> > anywhere)...
> >
> > Thank you :)
> >
> > cheers
> > James
> >
> > _______________________________________________
> > fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> > http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
>
> _______________________________________________
> 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