Funcionou como uma luva, valeu mesmo, a única coisa que tive que mudar foi o tipo de TypeCast como segue abaixo
Antes: for I := 0 to Pred(FList.Count) do (FList as IIntfA).Execute; Depois: for I := 0 to Pred(FList.Count) do IIntfA (FList[I]).Execute; Muito Obrigado, Anderson _____ De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao Morais Enviada em: quarta-feira, 27 de dezembro de 2006 11:22 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] Help em Interfaces ... anderson wrote: > E ai galera, seguinte. Estou querendo implementar algumas features no meu > sistema e estou precisando manipular uma coleção de objetos com um TList por > exemplo e em determinados momentos percorrer esta lista executando métodos > destes objetos pelas interfaces que implementam. Por exemplo. Supondo que eu > tenha a Interface A, e um monte de objetos que implementam esta interface > que tem o método DoSomething. Em algum momento do meu código eu gostaria de > correr esta lista de Objetos (que pode ser de qualuqer tipo, desde que > implemente a Interface A) e executar seu método DoSomething sem nem me > importar de que tipo é o objeto, chamando o método somente pela interface > que implementa. Alguém tem um código similiar ou dica de como fazer ??? Você pode fazer um wrapper para um TInterfaceList, colocar métodos Add(ISuaInterface) em seu wrapper, dentro dele fazer um cast dos itens para ISuaInterface, e então chamar o método. Não sou fã de interface e não conheço bem sua sintaxe, talvez você precise fazer um cast ou modificá-lo em um canto ou outro, mas a estrutura fica mais ou menos assim: TIntfAWrapper = class() private FList: IInterfaceList; public constructor Create; function Add(AItem: IIntfA): Integer; procedure Execute; end; function TIntfAWrapper.Add(AItem: IIntfA): Integer; begin FList.Add(AItem); end; constructor TIntfAWrapper.Create; begin inherited; FList := TInterfaceList.Create; end; procedure TIntfAWrapper.Execute; var I: Integer; begin for I := 0 to Pred(FList.Count) do (FList as IIntfA).Execute; end; -- João Morais [As partes desta mensagem que não continham texto foram removidas]