Ref TObject
Caros colegas, vcs poderiam me esclarecer uma dúvida?
Por exemplo:
var L:TList; i,j:Integer;
begin
L := TList.Create;
i := Integer(L);
j := Integer(@L);
end;
Agora vem a dúvida:
Qual a diferença entre i e j ? :shock: :?:
Antecipados agradecimentos !!!
Por exemplo:
var L:TList; i,j:Integer;
begin
L := TList.Create;
i := Integer(L);
j := Integer(@L);
end;
Agora vem a dúvida:
Qual a diferença entre i e j ? :shock: :?:
Antecipados agradecimentos !!!
Persist
Curtidas 0
Respostas
Beppe
17/07/2004
Um valor TObject ou descendente é apenas um ponteiro para o conteúdo do objeto. O operador @ pega o endereço de uma variável ou campo, então I é uma referência simples, e J é uma referência dupla. Se vc derefenciar J uma vez, vc terá o conteúdo de L, mais uma vez para ter o conteúdo do objeto. O Delphi já faz o dereferenciamento automático para valores TObject, então fica transparente ao user.
GOSTEI 0
Persist
17/07/2004
Olá Beppe, obrigado pela resposta.
Na verdade utilizo uma classe de conexão num programa servidor, onde ela precisa retornar às aplicações cliente um ´Handle´ de um objeto TDataset, então o que faço: retorno Integer(TQuery) por exemplo.
Não preciso retornar um ponteiro p/ TQuery pq as aplicações cliente não utilizam componentes sql.
Minha dúvida era se esse ´Handle´ de TQuery nunca iria se repetir para cada Query criada.
Na verdade utilizo uma classe de conexão num programa servidor, onde ela precisa retornar às aplicações cliente um ´Handle´ de um objeto TDataset, então o que faço: retorno Integer(TQuery) por exemplo.
Não preciso retornar um ponteiro p/ TQuery pq as aplicações cliente não utilizam componentes sql.
Minha dúvida era se esse ´Handle´ de TQuery nunca iria se repetir para cada Query criada.
GOSTEI 0
Beppe
17/07/2004
Pra cada Query criada, Integer(Q) retorna um ´inteiro´ diferente.
GOSTEI 0