Estou desenvolvendo uma aplicação com uma boa parte em orientação a objeto, acontece que eu nao consigo fazer um array de objeto, estou postando uma pequena parte do código para melhor esclarecer:
O que Acontece: faço um loop na tabela e preencho o objeto, até aí tudo certo, pego este objeto e adiciono a lista criada, o problema é que quando vou ler a lista ela está toda preenchida com o ultimo objeto lido, ou seja preencho tudo certinho mas nao sei por que ao ir adicionando mais um objeto esta lista atualiza todos os seus itens com este ultimo objeto:
Exemplo: Li o primeiro JOSE DOS SANTOS, adicionei a lista, pra conferir mandei exibir tudo ok, li o segundo JOSE OLIVEIRA adicionei a lista, mandei exibir e aí os dois itens da lista está com JOSE OLIVEIRA.
Fui alem, em vez de preencher com o objeto eu preenchi direto com o nome do cliente, funciona certinho, acontece que eu preciso do objeto, pois tenho neste todos os dados do cliente
Não sei se fui claro, mas é isto que acontece.
Código: Selecionar todos
***********************************************************************
Function ObterEntidadesPorChave(cChave)
************************************************************************
private aLista := {}
oCliente := TCliente() // Instancio o Objeto
cChave := alltrim(cChave)
select CLIE // Seleciono a tabela cliente
set order to 2
seek cChave
while(cChave == left(CLIE->CLNOME, len(cChave)) .and. !eof())
cliente := oCliente:ObterRegistro(.F.) // Aqui eu obtenho o cliente
MSGINFO('OBJ=' + cliente:clnome) // Para testar mandei exibir o dado do objeto, tudo certo até aqui
aadd(aLista, cliente) // Adiciono o objeto na Lista,
DbSkip(1)
enddo
// introduzido para testar
FOR A = 1 TO LEN(aLista)
msginfo('Cliente ' + str(A) + ' ' + aLista[A]:clnome) // Quando exibo todos os itens da lista está com o ultimo objeto inserido
next
return(aLista)

