Violação de acesso Delphi 5

14/06/2008

1

Bom dia a todos.

Estou tendo problemas com os meus sistemas desenvolvidos em Delphi 5. Criei novas versões nesses últimos dias e todas estão dando ´violação de acesso´ em diferentes forms, à medida que vou mexendo neles. Nos forms q não mexi ainda, não ocorre esse tipo de problema.
Sempre antes de chamar os forms eu uso:
try
    Application.CreateForm(TFConsOrcamento, FConsOrcamento);
    Application.CreateForm(TFOrcamento, FOrcamento);
....
finally
FConsOrcamento.free;
FOrcamento.free;
end;


Alguém já viu algo parecido ou sabe como resolver sem migrar para outro delphi de imediato ?

Grato pela atenção.


Responder

Posts

14/06/2008

Turbo Drive

Galera já mudei de pc onde tenho outro delphi 5 instalado com os mesmos componentes externos instalados.
Agora a pouco em um cliente, deu o seguinte erro:

[b:0f7e4b50ea] Esta classe já existe [/b:0f7e4b50ea]

Foi algo mais ou menos assim.

Alguém teria alguma sugestão ?


Responder

14/06/2008

Sremulador

try
    Application.CreateForm(TFConsOrcamento, FConsOrcamento);
    Application.CreateForm(TFOrcamento, FOrcamento);
....
finally
FOrcamento.free;
FConsOrcamento.free;
end; 


Verifique se esta classe já não esta criada em outro local, de uma debugada p ver de perto isso.


Responder

14/06/2008

Turbo Drive

Mas aí é q tá, qdo eu dou um .free, num já libera da memória e desabilita por completo ?


Responder

14/06/2008

Edilcimar

utilize release em vez de free e veja se o erro persiste


Responder

16/06/2008

Carlosrm

Turbo Drive,

uma possível causa é o Delphi estar criando automaticamente formulários conforme você os adiciona ao projeto. Ao criar novamente um objeto que já foi criado pelo Delphi, o compilador reclamará quando for acionado.

Para tentar resolver de imediato (se for isso), abra seu projeto em qualquer form ou unit. vá clicando no menu Project / Options / Forms. Nesta aba Forms, na listbox Auto-create forms, selecione apenas os formulários que você está criando manualmente e transfira-os para a listbox da direita (Available forms). Depois re-compile e execute.

Os formulários que vc está criando manualmente são todos aqueles embutidos em ´Application.CreateForm...´ e semelhantes.


Responder