Archive for the 'Object Pascal' Category

Published by Joao Morais on 06 Sep 2008

Objetos com contagem de referência

Imagine um data module, que por motivo de economia de memória é criado e destruído com a aplicação em execução. Imagine este data module sendo referenciado por mais de um formulário ao mesmo tempo. Como garantir que o data module será destruído apenas quando nenhum formulário estiver apontando para ele? Continue Reading »

Published by Joao Morais on 31 Aug 2008

Dica para gerenciamento de formulários

(english)

Ao meu ver, uma parte mal elaborada do Delphi/Lazarus é o gerenciamento de formulários da aplicação. Tanto o fato de usar uma variável pública independente para controlar a instância quanto a isca ‘jogue tudo no form’ trazem problemas. A primeira abordagem exige que o programador, ou crie os formulários no início da aplicação e não os destrua mais, ou exige que ele cuide para não deixar a variável apontar para um objeto destruído. A segunda abordagem, entre outros problemas, exige que a primeira funcione perfeitamente para que ocorra comunicação entre formulários. Continue Reading »

Published by Joao Morais on 23 Aug 2008

Ponteiros e alocação dinâmica

Tem um ditado que diz: Eu não sei, mas tenho o telefone de quem sabe. Trabalhar com ponteiros é muito parecido com isto, mas o ditado fica assim: Eu não sei, mas tenho o endereço de quem sabe. Continue Reading »

Published by Joao Morais on 06 Feb 2008

Como remover vazamentos de memória

Ferramentas como FastMM melhoram o desempenho de aplicações que utilizam muita alocação dinâmica, e de quebra ainda relata se a aplicação está deixando vazamentos de memória.

Agora saber que a aplicação tem vazamento de memória é fácil, no entanto, dependendo do tamanho do projeto, torna-se mais difícil determinar aonde ela foi alocada. Continue Reading »

Published by Joao Morais on 17 Nov 2007

Armadilhas com a falta de parênteses

Toda expressão lógica que possui algum dos operadores lógicos and, or, xor, entre outros, precisa agrupar cada comparação com parênteses para que o compilador entenda como a expressão deve ser interpretada. Continue Reading »