Duvida Parametros
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
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
Curtidas 0
Respostas
Paulo_amorim
23/12/2004
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é+
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é+
GOSTEI 0
Joeygustavo
23/12/2004
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
Até mais!
Jose Gustavo
GOSTEI 0