Relacionados a ferramenta de desenvolvimento Borland Delphi
Category Archives: Delphi
Varrendo DataSet com Métodos Anônimos
Métodos anônimos é um dos novos recursos trazidos pelo Delphi 2009. De início ele parece meio estranho e podemos levar um tempo para nos acostumar com a sintaxe, mas podem ser bem úteis em alguns casos como o que eu vou mostrar agora.
Quantas vezes você já não precisou escrever código para varrer um dataset do início ao fim?
DataSet.First;
while not DataSet.Eof do
begin
//
// Faz alguma coisa com o registro atual
//
DataSet.Next;
end;
Isso pode ficar ainda maior se você precisar usar DisableControls ou ainda restaurar o ponteiro do registro do DataSet após a varredura:
var
Bookmark: TBookmark;
begin
DataSet.DisableControls;
try
Bookmark := DataSet.Bookmark;
DataSet.First;
while not DataSet.Eof do
begin
//
// Faz alguma coisa com o registro atual
//
DataSet.Next;
end;
DataSet.Bookmark := Bookmark;
finally
DataSet.EnableControls;
end;
end;
Esse código todo é praticamente repetido em todas as varreduras que precisamos fazer em um DataSet. Então seria muito útil se pudéssemos extrair esse código e trocar apenas a parte que “faz alguma coisa com o registro atual”.
É aqui que os métodos anônimos nos ajudam muito.
Na unit SysUtils do Delphi, existe um tipo TProc declarado desta forma:
type
TProc = reference to procedure;
E vamos usá-lo para criar uma procedure que recebe um dataset e um método anônimo como parâmetros:
procedure ForEach(DataSet: TDataSet; Proc: TProc);
var
Bookmark: TBookmark;
begin
DataSet.DisableControls;
try
Bookmark := DataSet.Bookmark;
DataSet.First;
while not DataSet.Eof do
begin
Proc;
DataSet.Next;
end;
DataSet.Bookmark := Bookmark;
finally
DataSet.EnableControls;
end;
end;
E com isso podemos chamar a procedure dessa forma:
ForEach(Table1,
procedure
begin
ShowMessage(Table1NAME.Value)
end);
Como eu disse, a sintaxe inicialmente é meio estranha, mas com o tempo você acostuma. No exemplo acima eu codifiquei uma procedure sem nome e sem parâmetros e passei para ser executado em cada registro. Eu tinha um dataset chamado Table1 no form. ShowMessage será chamado para cada registro. Além disso, ele desativa os controles conectados ao dataset e restaura o ponteiro no final.
Perceberam como isso facilita nossa vida? Então pronto, pode ir remover o monte de código duplicado que você tem em seus aplicativos.
Existe ainda uma idéia mais legal que é transformar esse recurso em um helper para a classe TDataSet, mas isso eu vou deixar para vocês como lição de casa ou para um próximo post aqui no blog.
Update: Eu já estava prevendo que alguém comentasse isso. Sim, eu sei que já era possível antes com ponteiros de funções, mas com métodos anônimos é muito mais legal e é uma forma de tirar proveito dessa novidade do Delphi 2009. Para quem ainda não tem o Delphi 2009, vale a dica do amigo Marcos Douglas, postada nos comentários.
Problemas com Delphi no Windows 7
Depois de realizar mais testes, cheguei a conclusão que infelizmente o Windows 7 ainda não é uma boa opção para quem trabalha com Delphi.
Rodando o Delphi 2009 encontrei problemas na hora de usar o debugger em aplicativos com mais de uma thread. Quando uma exception é levantada, não é possível dar um break e resetar o aplicativo (Ctrl+F2) e você precisa reiniciar a IDE.
Já notifiquei o pessoal da CodeGear, mas como essa é uma versão beta e não suportada do Windows, não posso querer que eles resolvam.
Fica aí o alerta para os desenvolvedores Delphi.
Primeiras impressões do Windows 7 com Delphi, Firebird e mais
Instalei o Windows 7 Beta build 7000 em uma máquina de testes e já deu tempo de brincar um pouco. A instalação foi totalmente tranquila, reconheceu todo o hardware assim como o Vista já fazia. Optei pela versão 64 bits, que já venho usando no Vista há algum tempo.
A nova task bar realmente é bem melhor e é a primeira diferença que se nota logo que o sistema inicializa.
Depois disso comecei a instalar alguns dos aplicativos que mais uso no dia-a-dia.
Instalados e rodando sem nenhum problema até agora:
- Delphi 2009
- Firebird 2.1
- IBExpert
- TortoiseSVN
- Mozilla Firefox
Não funcionaram Funcionando após algum ajuste:
- Google Chrome: O Windows avisa que tem problema de compatibilidade conhecido. E descobri essa dica de como fazer funcionar.
Conclusão, estou considerando sériamente em arriscar e instalar ele na minha máquina principal.
Para quem está interessado em testar e não tem assinatura MSDN nem TechNet, acho que ele vai estar disponível publicamente para download amanhã.
Delphi 2009: Finalmente uma IDE que não quebra o dia todo?
Apenas uma nota rápida sobre Delphi 2009 após alguns dias usando em tempo integral.
Finalmente depois do Delphi 7, esta parece ser uma versão que não quebra o dia todo. Apesar de muita gente dizer que o Delphi 2007 era estável, eu pelo menos não tinha estabilidade com ele. Quebrava pelo menos duas ou três vezes por dia.
Isso não acontece com o 2009, que está bem mais estável. E não venha me dizer que isso tem algo a ver com a versão ser impar, porque o 2007 também era.
RemObjects Oxygene é o novo Delphi Prism
Apesar de até este momento não terem divulgado oficialmente, está na cara que o novo Delphi Prism é o Oxygene (antigo Chrome) da RemObjects.
Vejam o post que o Marc Hoffman da RemObjects fez em seu Twitter cerca de duas horas atrás. Traduzindo seria algo como: “Novo build beta do Prism saindo da linha de produção agora”.
O Delphi Prism foi anunciado pseudo-oficialmente na SDN Conference na Holanda. O Marco Cantu publicou alguns detalhes do anuncio em seu blog.
E se você quer participar do beta do Prism, pode se inscrever aqui.
Não teremos BorCon esse ano
O nome BorCon já não fazia muito sentido e já tinha sido abandonado pela CodeGear nos EUA. Por aqui ele resistiu um pouco mais.
Hoje alguém da Borland (sim, ela se identificou dessa forma) me ligou oferecendo o Delphi 2009. Eu disse que tinha interesse, porém iria esperar o BorCon para comprar com desconto, como faço todo ano. Então ela me disse que não teríamos BorCon esse ano.
Será que teremos que comprar o Delphi com preço full? Ou teremos alguma promoção estilo BorCon? Só isso me preocupa. A pessoa ficou de me enviar a proposta de upgrade para o Delphi 2009. Isso foi hoje de manhã e nada até agora.
De qualquer forma, em outubro tem o TechEd da Microsoft e estarei por lá novamente, principalmente para ver o keynote do Steve Ballmer.
RemObjects SDK com suporte a Delphi 2009 e Lazarus
A nova versão (5.0.33) do RemObjects SDK, lançada no último dia 29, traz suporte ao Delphi 2009, além de suporte a IDE gratuita Lazarus, do Free Pascal.
No caso do Delphi 2009, o instalador não traz as versões compiladas dos pacotes e units pois a versão final do Delphi 2009 ainda não foi liberada. Mas ele traz todo o código fonte compatível para que seja utilizado quando a nova versão estiver disponível.
SmartInspect 3.0 lançado
Uma das ferramentas que eu mais uso no dia a dia é o SmartInspect. Ele te ajuda a entender muito melhor como seu aplicativo se comporta internamente. Quando você começa a incluir log nas operações internas do seu aplicativo, você descobre que ele se comporta de forma muito diferente do que você imaginava.
A nova versão foi anunciada e lançada com muitas novidades.
Anunciado o Delphi 2009
Ontem foi anunciado oficialmente o Delphi 2009, que também vinha sendo conhecido como Tiburon. Ele já está disponível para pré-venda nos EUA, mas ainda não no Brasil, pelo menos não na loja virtual da Borland/CodeGear/Embarcadero.
Para nós usuários do Delphi uma nova versão é sempre uma esperança renovada de que a ferramenta esteja melhor e nos dando mais produtividade. Entre as novidades dessa versão, estão melhorias importantes na linguagem como Generics, que para mim é a principal novidade e o que tenho esperado no Delphi há muito tempo.
Ele tras também novos controles da VCL, como o Ribbon, que serve para criar barras de tarefas estilo Office 2007. Pra quem já utiliza os componentes da DevExpress, pouco importam essas novidades. Inclusive nós já temos o Ribbon lá há muito tempo.
Existem melhorias no DataSnap, que são muito interessantes, principalmente para quem usa o DataSnap atual puro do Delphi, que depende de COM e sempre só ouvi reclamações. Digo DataSnap atual puro, pois eu utilizo o DataSnap com RemObjects para camada de comunicação, então nunca dependi do COM e nunca passei as dificuldades que isso trás.
E claro, Unicode, que praticamente nenhum desenvolvedor brasilieiro precisa, mas que é importante para que a ferramenta atender o maior mercado possível suportando qualquer conjunto de caracteres.
Junto as novidades, sempre vem um pouco de melhoria na estabilidade e performance da IDE. Isso eu diria que pra mim é um dos itens mais importantes. O meu Delphi 2007 por exemplo, ele dá pau pelo menos entre duas a três vezes por dia. São aqueles erros inexplicáveis que te obrigam a fechar a IDE e recomeçar o trabalho.
Vale a pena atualizar seus Delphi para o 2009? Na minha opinião vale. Eu com certeza atualizarei o quanto antes. Meus principais motivos são:
- Generics vai permitir que eu elimine muito código.
- IDE mais rápida e estável, reflete em maior produtividade do desenvolvedor.
- Suporte ao produto. Não podemos negar que a CodeGear está se esforçando de verdade para melhorar o produto e parece que está cada vez mais na direção certa. Pare e pense qual seria o tamanho do prejuízo se você tivesse que migrar seus projetos para uma outra plataforma no caso do Delphi ser abandonado. Pensou? Pois é, você vai ver que o custo do Delphi é insignificante perto desse custo. Então temos que suportar o produto, comprando as licenças.
Mais informações sobre o anúncio:
Delphi 2009 apenas Win32 e futuro Delphi .NET
Nick Hodges, gerente de produto do Delphi, explicou em seu blog que o Delphi 2009 (Tiburon) será um produto apenas para desenvolvimento nativo, ou seja, Win32.
Acho uma ótima notícia. O Delphi Win32 ainda tem tanto potencial que merece com certeza toda a atenção possível.
Porém, o que mais me chamou a atenção foi que o .NET não foi abandonado, e um novo roadmap será divulgado em breve, além de um produto suportando as últimas tecnologias e frameworks .NET. Humm. Será que vão realmente investir pesado em uma IDE paralela ao Visual Studio ou vão finalmente desenvolver um plugin para ele?
E ao contrário dos que pensam que teriam que comprar o Visual Studio separadamente para rodar o Delphi plugin, isso não é necessário não. O Oxygene (ex Chrome) da RemObjects já vem com a IDE, ou seja, se você não tem o Visual Studio, quando instala o Oxygene, é instalado um Visual Studio apenas com a linguagem Oxygene.
A CodeGear poderia tranquilamente fazer a mesma coisa. São apenas especulações da minha parte. Mas faria muito sentido.
Quer mais um pouco de especulação? Quando a RemObjects mudou o nome do Chrome para Oxygene, disse que simplesmente não podia explicar o motivo. Disse apenas que era um bom motivo e que só faria o bem ao produto. Hum.. teria essa mudança algo a ver com as mudanças de planos da CodeGear para a plataforma .NET? Quem sabe?
Novo DataSnap x RemObjects SDK
O Tiburon (ou Delphi 2009) trará boas novidades em DataSnap. Isso me deixou contente, visto que uso DataSnap em todos os meus aplicativos.
Fui questionado como essas novidades se comparam ao RemObjects SDK mas ainda é um pouco cedo para comparar os dois, visto que o que vimos do novo DataSnap até agora é muito pouco. O que me parece é que o DataSnap ainda será mais simples do que o RemObjects SDK, o que não poderia ser muito diference, visto que o RO já tem muito mais tempo e maturidade.
Steve Shaughnessy deu um preview das melhorias do DataSnap em seu blog e as discussões nos comentários ficarem bem interessantes também.
De início o que ficou meio confuso para mim e para outros é que aparentemente os métodos remotos precisam ser chamados sempre como stored procedures. Os parâmetros dos métodos (tanto de entrada como saída) seriam parâmetros das “stored procedures”.
Além disso, por padrão, não existe nenhuma checagem de tipo pelo compilador, apesar que nos últimos comentários o Steve já disse que isso pode estar disponível até o lançamento do produto.
Vamos aguardar mais novidades para poder comentar melhor.
RemObjects para Mac OS X e iPhone
A RemObjects está abrindo o beta dos seus produtos para Mac OS X e iPhone.
Cesar Romero blogando
O Cesar Romero voltou a blogar com muita vontade. Vale a pena acompanhar. Bastante conteúdo útil para desenvolvedores Delphi e Firebird.
CodeGear vendida por meros US$ 30 milhões
Eu provavelmente estou sendo o último a blogar sobre isso, mas não poderia deixar de comentar.
Finalmente alguém comprou a CodeGear. Foi a Embarcadero que pagou apenas US$ 23 milhões, além de deixar outros US$ 7 milhões para a Borland em contas a receber. Ou seja, valor total da transação: US$ 30 milhões. Confesso que achei que a CodeGear valesse muito mais.
Mas eu concordo com a maioria. Acho que foi um ótimo negócio para a CodeGear se desligar em definitivo da Borland, que era mais um peso do que qualquer outra coisa. Acho que agora ela terá muito mais liberdade para investir nas ferramentas.
Se o nome CodeGear deixar de existir, em breve teremos o Embarcadero Delphi. Que ele venha com tudo e melhor do que nunca!
Mais info aqui, aqui e em todos os outros blogs sobre Delphi.
Driver DBX4 gratuito para Firebird
O Thiago Borges de Oliveira disponibilizou um driver DBX4 para Firebird. Gratuito!
Se você está tendo problemas com o driver da Borland e utilizar um driver comercial não é uma opção, vale a pena dar uma olhada.
Eu uso o driver da CoreLab há algum tempo e estou bem satisfeito, então não estarei testando o driver do Thiago, mas seria legal que alguém testasse e fosse postando os comentários para ajudar os outros.
Aproveito para parabenizar o Thiago pela iniciativa!
Blaise Pascal Magazine
A Blaise Pascal Magazine é uma nova revista direcionada as linguagens baseadas em Pascal, como Delphi, Free Pascal, Chrome, etc.
Possui versão gratuita para download online e versão impressa por um preço bem acessível. 25 euros para o primeiro ano e 40 euros a partir do segundo. Aparentemente ela pode ser despachada para qualquer lugar do mundo e os custos já estão inclusos na assinatura.
Matriz de Dependência para Pascal
A ModelMakerTools e a Lattix, trazem uma ferramenta muito interessante para o nosso querido Pascal.
O Lattix LDM for Delphi Pascal analisa a estrutura de aplicativos Pascal baseado nas units e nas dependências entre elas para criar uma Dependency Structure Matrix (DSM ou Matriz de Dependência para simplificar).
A primeira vez que vi essa matriz foi com o NDepend para .NET e fiquei com inveja por não ter algo assim para Delphi Win32. Com essa matriz fica muito mais fácil analisar a arquitetura de grandes projetos e identificar pontos onde ele precisa ser melhorado.
Para entender melhor, existem alguns webcasts úteis aqui.
Delphi-PRAXiS Help-Booster
Quantas vezes você já apertou o F1 no Delphi 2006/2007 e foi tomar um cafézinho até que ele abrisse? Ou dar aquela volta pela empresa passando para zoar o pessoal do suporte?
Se você usa a lentidão do help do Delphi como pretexto para isso, não instale o Help Booster, pois ele deixa o help instantâneo e integrado na IDE. Tudo muito prático e rápido.
Via blog do Cesar.
Pesquisa Delphi 2008
Todo desenvolvedor Delphi deve responder a pesquisa para ajudar o pessoal da CodeGear a direcionar o produto. Eu já fiz a minha parte, faça a sua também! Por enquanto só existe versão em inglês, mas estão trabalhando nas outras versões. Acesse a pesquisa aqui.
Review Delphi 2007 Handbook
Acabei de ler o Delphi 2007 Handbook do Marco Cantu e minha conclusão é: vale a pena o investimento para quem está usando o Delphi 2007.
O livro é voltado para desenvolvedores já com experiência na ferramenta e aborda apenas as melhorias do Delphi 7 ao Delphi 2007, então não perde tempo explicando conceitos básicos que todos os desenvolvedores já sabem. Isso é um ponto bem positivo na minha opinião, pois é duro ficar relendo coisas que você já faz há mais de 10 anos. Outro detalhe que vale ser destacado é que ele é focado para o Delphi 2007 para Win32, e não RAD Studio, então ele não fala nada de .NET.
O conteúdo é bem abrangente, tratando desde as melhorias na IDE, como Live Templates e Refactorings, passando pelas mudanças na RTL, novos componentes e mudanças na VCL, compatibilidade com o Windows Vista e o novo DBX4. Apesar disso, trata poucos assuntos de forma mais profunda. Mas isso não diminui sua importância, pois é o básico que todo desenvolvedor Delphi 2007 deveria saber.
Na minha opinião, é um livro que não deveria faltar na coleção Delphi de um desenvolvedor/empresa. Como nem todos tem hábito de ficar acompanhando os blogs e newsgroups sobre Delphi, o livro é um ótimo meio para nivelar a equipe na nova versão do Delphi.
TPodcast