Artigo Clube Delphi Edição 1 - Será que o erro é meu?

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)

Artigo da Revista Clube Delphi Edição 1.

Esse artigo faz parte da revista Clube Delphi edição 1. Clique aqui para ler todos os artigos desta edição


Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Será que o erro é meu?

 

Nesta seção falaremos sobre bugs no Delphi. Não sobre os possíveis bugs que possamos cometer, mas literalmente sobre os bugs da linguagem Delphi. Achei interessante criar um tópico para cuidar deste assunto, pois nos deparamos com erros e limitações de programação diariamente. Uma seção falando sobre coisas realmente não são possíveis de serem feitas, ou de bugs na linguagem, pode econmizar bastante tempo de depuração no hora em que nos deparamos com tais situações.

Nesta edição me limitei a falar sobre bugs encontrados na parte de manipulação de banco de dados, e que foram resolvido com os últimos upgrades do Delphi 4.0 (4..01 e 4.02). não deixe de instalar estes patchs, pois a quantidade de problemas encontrados na versão 4.00 é muito grande. A seguir separei alguns destes erros (ou limitações), mostrando em qual patch ele foi solucionado:

 

No Delphi 4.00, muitos eventos do objeto TTABLE não são disparados de forma correta. Veja alguns deles:

 

Evento AfterScroll:

Este evento não pe chamado apóes um comando Locate; solucionado no patch 4.02.

 

Evento OnUpdateRecord:

 Cached Updates não disparam este evento. Solucionado no patch 4.02.

 

Eventos BeforeScroll e AfterScroll:

Não são deisparados ao cancelar uma inserção, nem ao usar o método GotoCurrent. Solucionado no patch 4.02.

 

Outras falahar encontradas no uso do objeto TTABLE:

Métido LOCATE:

Este foi o erro mais curioso que escontramos:

Ao executar o método Locate em campos do tipo DateTime, em alguns casos ele simplemsnete não funciona. Segundo a Inprise não há explicação, ele simplesmente não funciona, aleatoriamente. O mesmo acontece com consultas parametrezadas, usando o bjeto Tquery: ao executar uma consulta que tenha um campo. DateTime como parâmetro, na maioria das vezes ele funciona, mas nem sempre.

 

O método Locate apresenta também um erro muito curioso: ele não  trabalha de forma consistente. Por exemplo, faça o seguinte teste:

Coloque em um form um objeto Ttable, um TdataSource, um TdbGrid e um Tbutton. Linke-os de forma correta

Defina a propriedade DatabaseName do objeto Ttable para DBDEMOS, e a propriedade TableName para Items.db.

No evento OnClick do Tbutton, digite:

 

 

O getistro não será encontrado.

 

Agora mude o código para:

 

 

E o registro será encontrado...

 

Mais uma vez, não houve explicação da Inprise sobre isto. Resolvido no patch 4.02.

 

Também há problemas ao usar o objeto Tquery. Vejamos alguns:

 

Proriedade CONSTRAINED:

Esta propriedade não apresenta nenhuma funcionalidade no Delphi 4.0. No Delphi 3.0, apresenta Access Violation no arquivo IDAOI32DLL.

 

Exemplo

Na cláusula SQL: select from crientes where uf = ‘MG’. Casi tebte ebtrar cin yn vakir duferebte de ‘MG’ no campo uf, e a propriedade constainet estiver definida para TRUE, o Delphi 3.0 apresentará a mensagem de erro referida, e o Delphi 4.0 simplesmente irá ignorar. Resolvido no patch 4.01.

 

MS SQL Server:

Ao executar uma stored procedure passando um parâmetro do tipo MONEY, o servidor gera um erro Resolvido no patch 4.01.

 

Componente Tsession:

Ao deletar um componente TSESSION do formulário, as referências feitas nos objetos TdataBase ou TdataSet, não são removidas automaticamente. Ao tentar, por exemplo, alterar a propriedade AliasName do objeto DataBase, um access violation pe disparado. Resolvido no patch 4.02.

 

Componente TdbCtrlGrid:

Quando o objeto TdataSet associado é fechado e reabeto, o objeto não é redesenhado corretamente. Resolvido no patch 4.02.

 

Bom, chega de bugs para nés. Felizmente, todos encontrados aqui já foram resolvidos com os patchs do Delphi 4.0. caso você queira publicar algum bug descoberto mande um e-mail para felipe@delphi-rio.com.br, e inremos entrar em contato com a Inprise para que ela tente explicá=lo.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?