123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- program democollection;
- uses browserconsole, sysutils, classes;
- Type
- { TMyCollection }
- TMyCollectionItem = class(TCollectionItem)
- private
- FMyName: String;
- Published
- Property MyName : String Read FMyName Write FMyName;
- end;
- { TMyCollectionItems }
- TMyCollectionItems = Class(TCollection)
- private
- function GetMI(AIndex : Integer): TMyCollectionItem;
- procedure SetMI(AIndex : Integer; AValue: TMyCollectionItem);
- Public
- Function AddItem : TMyCollectionItem;
- Property MyItems[AIndex : Integer] : TMyCollectionItem Read GetMI Write SetMI;default;
- end;
- { TMyCollectionItems }
- function TMyCollectionItems.GetMI(AIndex : Integer): TMyCollectionItem;
- begin
- Result:=Items[AIndex] as TMyCollectionItem;
- end;
- procedure TMyCollectionItems.SetMI(AIndex : Integer; AValue: TMyCollectionItem);
- begin
- Items[AIndex]:=AValue;
- end;
- function TMyCollectionItems.AddItem: TMyCollectionItem;
- begin
- Result:=Add as TMyCollectionItem;
- end;
- Procedure DumpCollection(C : TMyCollectionItems);
- Var
- S : String;
- I : integer;
- begin
- S:='';
- For I:=0 to C.Count-1 do
- begin
- If S<>'' then
- S:=S+', ';
- S:=S+'['+IntToStr(I)+'] : '+C[i].MyName;
- end;
- Writeln('Fruit collection: ',s);
- end;
- Procedure DumpCollection2(C : TMyCollectionItems);
- Var
- S : String;
- Itm : TCollectionItem;
- begin
- S:='';
- For Itm in C do
- begin
- If S<>'' then
- S:=S+', ';
- S:=S+'['+IntToStr(Itm.Index)+'] : '+TMyCollectionItem(Itm).MyName;
- end;
- Writeln('Fruit collection: ',s);
- end;
- {
- Const
- MyNames : Array [1..10] of string
- = ('apple','pear','banana','orange','lemon','prune',
- 'pineapple','strawberry','raspberry','cherry');
- }
- Function GetName(I : integer) : String;
- begin
- Case I of
- 1 : Result:='apple';
- 2 : Result:='pear';
- 3 : Result:='banana';
- 4 : Result:='orange';
- 5 : Result:='lemon';
- 6 : Result:='prune';
- 7 : Result:='pineapple';
- 8 : Result:='strawberry';
- 9 : Result:='raspberry';
- 10 : Result:='cherry';
- end;
- end;
- Var
- MyC : TMyCollectionItems;
- C : TMyCollectionItem;
- I : Integer;
- begin
- MyC:=TMyCollectionItems.Create(TMyCollectionItem);
- For I:=1 to 10 do
- begin
- C:=MyC.AddItem;
- C.MyName:=GetName(i);
- end;
- DumpCollection(MyC);
- Writeln('pruning prune');
- MyC.Delete(5);
- DumpCollection(MyC);
- Writeln('Prefer banana over pear');
- MyC.Exchange(1,2);
- DumpCollection2(MyC);
- Writeln('Indigestion, no more fruit');
- MyC.Clear;
- DumpCollection2(MyC);
- end.
|