Cade a Produtividade

Delphi

18/12/2006

Srs,

Estamos a dias procurando um erro que tem se apresentado em nossos clientes, que nao estamos conseguindo descobrir :

Erro : Range check error

O erro aparece nos lugares mais diferentes possiveis. Em consulta, em manutencao, em emissao de relatorio.

Aqueles casos comuns de estouro de matriz, pesquisa de string menor que o indice, etc... ja foram exaustivemente pesquisados.

Alguem tem alguma dica de outro tipo de situacao que pode provocar esse erro ?

Alguem tem alguma sugestao de como pesquisar esse tipo de erro ? É incrivel que em um ambiente de programacao profissional e dito produtivo nao se tem uma ferramenta para encontrar um erro em principio banal.

Utilizamos Delphi 7. O erro tem aparecido nos clientes em Win98 e XP. Temos uma rotina de tratamento de erros que quando isso acontece, como neste caso, recebemos um e-mail com algumas informacoes do ambiente.

Agradeco alguma colaboracao.

Fabio


Fabio Ferreira

Fabio Ferreira

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

18/12/2006

abra seu projeto e veja se a opção [b:e39c20a823]Projetcs -> Options -> Compiler -> Range checking[/b:e39c20a823] está marcada. se estiver, desmarque.


GOSTEI 0
Fabio Ferreira

Fabio Ferreira

18/12/2006

Ola Emerson,

A opcao esta marcada. Mas sempre esteve marcada porem o erro comecou a aparecer de uns dias para ca, provavelmente em funcao de alguma modificacao que fizemos.

Agora, o objetivo dessa opcao nao é justamente apresentar o erro, checkando o intervalo disponivel para nao dar um erro supostamente pior, como access violation por exemplo ?

A sua sugestao de desmarcar tem algum efeito que voce ja tenha visto antes ?

Obrigado por ter respondido.

Fabio


GOSTEI 0
Massuda

Massuda

18/12/2006

[quote:1f35e20226=´Fabio Ferreira´]Alguem tem alguma sugestao de como pesquisar esse tipo de erro ? É incrivel que em um ambiente de programacao profissional e dito produtivo nao se tem uma ferramenta para encontrar um erro em principio banal.[/quote:1f35e20226]A mensagem de erro contem o endereço onde a exceção ocorreu. Use [b:1f35e20226]Search|Find error[/b:1f35e20226] como explicado :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=80339]neste tópico[/url]. Você pode melhorar também o tratamento de exceções inesperadas no seu programa com o Madshi ou o JCL Debug.


GOSTEI 0
Fabio Ferreira

Fabio Ferreira

18/12/2006

Ola Massuda

Infelizmente neste caso nao tem o endereco do erro. Para o access violation, a pagina que voce indicou ajuda. As vezes.
Neste caso temos um seco : Range check error. Eu realmente nao entendo esse tipo de coisa. Nao ter um recurso na propria linguagem para achar um erro.

Qualquer outra dica sera bem-vinda.

Fabio


GOSTEI 0
Massuda

Massuda

18/12/2006

Desculpe, realmente não me lembrava que a mensagem do ERangeError não cita o endereço onde deu o problema (ela mostra apenas o valor que gerou o problema).

De qualquer forma, seria boa idéia usar no seu programa algum mecanismo melhorado de tratamento de exceções inesperadas. Pesquise por ´madshi´ ou ´jcl debug´ aqui no fórum.


GOSTEI 0
Macario

Macario

18/12/2006

Olá.

O componente madexcept da [url]www.madshi.net[/url] que o colega Massuda informou ele trabalha ´em cima´ do recurso MAP File do Delphi.

Caso queira implementar ´na mão´ pesquise no google: MAP File Delphi Debugger

[]´s 8)


GOSTEI 0
Fabio Ferreira

Fabio Ferreira

18/12/2006

Massuda / Macario

Muito obrigado pelas informacoes. Vou pesquisar esse assunto para melhorar minha rotina de tratamento de erros.

Fabio


GOSTEI 0
Fabio Ferreira

Fabio Ferreira

18/12/2006

Pessoal,

Pesquisei esse assunto nos locais indicados, madshi, google, etc... e achei bastante informacao. Agora nao consegui a informacao de como fazer quando o erro nao apresenta o endereco do mesmo, como no access violation. Neste caso do ERangeError mesmo tendo toda a estrututura do MAP como vou pesquisar isso ?

Emerson : Se voce pudesse por gentileza explicar melhor o motivo da sua sugestao, quem sabe ajudaria.

Obrigado a todos,

Fabio


GOSTEI 0
Massuda

Massuda

18/12/2006

[quote:cd45c5fcdd=´Fabio Ferreira´]Neste caso do ERangeError mesmo tendo toda a estrututura do MAP como vou pesquisar isso ?[/quote:cd45c5fcdd]Esses ´pacotes´ geram relatórios detalhados que incluem um dump da pilha no momento que a exceção foi gerada, ou seja, a lista das funções/procedures que geraram o erro. Dependendo da configuração, o relatório já vai conter o nome das funções/procedures e linha/nome do arquivo onde o erro ocorreu.


GOSTEI 0
POSTAR