Fórum Duvida Parametros #263236

23/12/2004

0

Tenho uma duvida que é bastante básica, mas que está me incomodando muito!

Tenho a seguinte procedure no meu codigo:

ListaObjetos : TStringList;

procedure AdicionaLista(objeto : TObject);
begin
ListaObjetos.AddObject(Componente(objeto).pCodigo,objeto);
end;

Onde Componente é uma classe que eu criei. Considerem que a ListaObjetos está iniciada. Eu chamo o seguinte codigo:

var objetoRua : TObject;
objetoRua := Rua.Create();
Adicionalista(objetoRua);

Rua também é uma classe que eu criei, que é subclasse da classe Componente. Minha duvida basica é a seguinte: eu estou passando para a procedure um objeto da classe RUA. Dentro do codigo, ele insere na ListaObjetos um OBJETO que é TOBJECT. Muito bem, o objeto que estará inserido na ListaObjetos será um objeto da classe RUA, ou será um objeto da classe TOBJECT? O Delphi já trata isso automatico, ou eu tenho que fazer uma das coisas a seguir:

procedure AdicionaLista(objeto : Rua);
begin
ListaObjetos.AddObject(objeto.pCodigo,objeto);
end;

procedure AdicionaLista(objeto : TObject);
begin
ListaObjetos.AddObject(Rua(objeto).pCodigo,Rua(objeto));
end;

Eu sei que talvez essa duvida seja bastante amadora, mas preciso saber isso urgente!

Obrigado!

Jose Gustavo


Joeygustavo

Joeygustavo

Responder

Posts

23/12/2004

Paulo_amorim

Olá

Como Rua eh necessariamente descendente de Oject, ele pode ser passado normalmente sem o Casting. Quando você passar como parâmetro no AddObject, ele será tratado como Object pois eh assim que o parâmetro o requer, mas ele [b:b9cf55eac0]não deixa[/b:b9cf55eac0] de ser um objeto do tipo Rua. Se você precisar usar métodos da classe Rua mais tarde, será possível.

Espero que tenha ficado claro...
Até+


Responder

Gostei + 0

23/12/2004

Joeygustavo

Beleza, não imagina como me deixou aliviado isso, hehe.... Mas a explicação foi muito clara sim, obrigado pela ajuda!!

Até mais!

Jose Gustavo


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar