Problemas com Try Excetp

Delphi

15/10/2003

Uso o Delphi 5, e sempre usei o Try e Except para não dar aquelas mensagens de erro no sistema, quando houvesse algum erro. Acontece que ultimamente fui instalar o sistema em 4 maquinas novas, e todas apresentaram travamento em algumas telas. Ele trava tudo, quando dou Ctrl+alt+del, para fechar o sistema ele trava o mouse, tudo, ai só reiniciando no botão... Descobri onde esta o problema.!!

O problema acontece quando o programa tem que entrar no Except.
Aqui vai um exemplo das linhas onde eu vi que esta travando:
[b:e65b2aa560]Try[/b:e65b2aa560]
CalLucro:=(TaProdPrecoUnit.value*100)/TaProdPrecoCusto.value;
[b:e65b2aa560]Except[/b:e65b2aa560]
CalLucro:=0;
[b:e65b2aa560]End;[/b:e65b2aa560]

Se acontecer de [b:e65b2aa560]TaprodPrecoCusto.value=0[/b:e65b2aa560] ocorrerá um erro , pois não se divide por zero, em vez do sistema executar a linha abaixo do [b:e65b2aa560]except[/b:e65b2aa560] ele trava...

Alguem sabe o que pode estar acontecendo..... OBS: O programa funciona corretamente em todas as maquinas que tenho o sistema, menos nas maquinas com versões de placa mãe mais atuais... Pois testei em duas maquinas com o mesmo tipo de processador, somente com a placa mãe diferente, e uma trava e a outra não..


Sistemp

Sistemp

Curtidas 0

Respostas

Hiko Seijuro

Hiko Seijuro

15/10/2003

O meu Delphi da isso também (eu estou usando o 7). Só que normalmente só da quando eu testo a aplicação dentro do Delphi, quando rodo fora funciona normalmente (correção, dentro do Delphi é ele quem acusa erro na linha do Try, mas como meu programa que deu isso ficou muito mal feito e eu acabei delentando e fazendo outro não posso comentar). Bom você pode estar subistituindo as duas linhas por
[b:de1dec636b]if [/b:de1dec636b] TaProdPrecoCusto.value = 0 [b:de1dec636b]then[/b:de1dec636b] CalLucro := 0 [b:de1dec636b]else[/b:de1dec636b] CalLucro:=(TaProdPrecoUnit.value*100)/TaProdPrecoCusto.value;


Acredito que isso seja um problema relacionado mais a estrutura da parte física, o que deve estar entrando em conflito com a lógica usada no [b:de1dec636b]Try[/b:de1dec636b], mas fazendo da forma acima você vai estar aumentando a compatibilidade do seu sistema.
Tem uma função, que se não me engano é a EZeroDivide ou algo assim, que testa se é uma divisão por zero mas eu não consegui achar (nem me lembro) da forma correta de utilizar a função.


GOSTEI 0
Sistemp

Sistemp

15/10/2003

O erro que mostrei acima, é so um exemplo de onde acontece o erro, não quer dizer que posso substituir este procedimento por outro que verifique antes se o PrecoCusto=0.. Acontece que o erro esta ocorrento
em qualquer lugar que tenha um [b:11c7a296a4]except[/b:11c7a296a4] , ou seja que a linha abaixo do [b:11c7a296a4]except[/b:11c7a296a4] tenha que ser executada.


GOSTEI 0
POSTAR