Willian Jhonnes Lara dos Santos wrote:
>> Se o problema aparece em Delphi 7, então é certo que está na sua 
>> aplicação. Do contrário, numa hipótese muito remota, poderia ser bug da vcl.
> 
> Acredito que possa, mesmo, ser um bug. Em minha estação de desenvolvimento o
> problema não se apresenta. Em nenhuma outra estação da equipe o erro se
> apresenta tb... Lembre-se: o objeto NÃO foi destruído, apenas fechado (método
> Close).

Falei em objeto, mas não necessariamente do objeto tdataset. Pode ser 
qualquer outro objeto ou área de memória desalocada no momento do close. 
Ao ligar as informações de debug da sua aplicação e da vcl, você terá um 
backtrace rico em detalhes. Use também um gerenciador de memória em modo 
de depuração, o erro vai ocorrer tão próximo quanto possível do objeto 
ou área de memória com problema.

> Não há pq a aplicação apontar para um um objeto destruído, visto que
> nunca uso o método Free em objetos instanciados em tempo de design. Enfim, o
> erro só ocorre quando tenho linhas executando o método Close consecutivamente
> em meu código, por exemplo:
> 
> spSelEmpresa.Close;
> spSelBandeira.Close;

Ligue as informações de debug da aplicação e da vcl, coloque um 
breakpoint no primeiro close e execute a aplicação passo a passo. Veja 
se você consegue algo.

> Reitero: os objetos foram instanciados em tempo de design e não costumo
> destruir nenhum deles em tempo de execução. E o erro só acontece em alguns
> computadores, não em todos.

Pode ser algo estúpido, como alguma diferença na instalação de uma 
biblioteca cliente que faz com que algum componente comporte-se de forma 
diferente, e esta diferença de comportamento não é previsto nem por você 
nem pela aplicação. Daí vem o AV.

Cabaram-se as idéias. Se tiver algum progresso, conta pra gente. Se eu 
puder ser útil com alguma coisa, pode mandar.

Joao Morais

Responder a