Giovani wrote:

> Bom dia, eu quero criar um ITerator de Objetos, como eu faço?
> Eu criei um, mas específico de um IXMLNODELIST, mas eu quero criar um que 
> receba qualquer Objeto...
> 
> Alguém já fez algum?

Você pode construir algo assim:

TIterableList = class(TObjectList)
public
   function CreateIterator: TIterator;
end;

TIterator = class(TObject)
private
   FCurrentItem: Integer;
   FList: TIterableList;
public
   constructor Create(AList: TIterableList);
   function CurrentItem: TObject;
   procedure FirstItem;
   ...
end;

...

function TIterableList.CreateIterator: TIterator;
begin
   Result := TIterator.Create(Self);
end;

constructor TIterator.Create(AList: TIterableList);
begin
   inherited Create;
   FList := AList;
end;

etc.

--
Joao Morais

Responder a