segunda-feira, 30 de maio de 2011

Obter caminho de qualquer aplicação Delphi


Saudações, caros delphianos! Quando estamos desenvolvendo uma aplicação executável (.EXE) e necessitamos obter o caminho completo da mesma, costumamos utilizar o método ExtractFilePath, da biblioteca SysUtils, passando por parâmetro o nome do executável de nossa aplicação, como segue

  strPath := ExtractFilePath(Application.ExeName);

Pois bem, mas e se precisarmos fazer o mesmo em uma aplicação ISAPI (.DLL), como IntraWeb ou WebBroker?

Na biblioteca SwSystem, podemos encontrar a variável gsAppPath que contém o caminho da DLL da aplicação. O melhor disso tudo é que podemos utilizar esta variável em qualquer tipo de aplicação, inclusive executáveis!

IBX & Firebird - Out of Memory em relatório com muitos registros


Olá amigos! Certo dia me deparei com um belo "Out of Memory" em uma máquina de 4GB de RAM e uma base de 500MB. O erro aparecia quando o cliente tentava tirar um relatório de vendas de 01/01/2009 à 31/12/2009. Cheguei a pensar que pudesser ser configuração do FB, mas fiz os testes por fora do sistema e não tive problemas com o select. Sendo assim, o problema estava no programa em trazer muitos registros pra ele.

Pensei: se é um relatório, uma vez impresso o registro, pra que armazena-lo em memória? Então fiz o teste com a propriedade "Unidirectional = True" no IBQuery e adivinha?! "Adios" out ouf memory!

Essa semana um amigo me procurou para dizer que teve o mesmo problema e encontrou a dica no site da lista de discussão da firebase, onde a postei originalmente. Então decidi publica-la aqui também para que possa ajudar mais pessoas com este problema.