30 anos de Delphi

Dia 14/02/2025 o Delphi completa 30 anos de existência! Nessas 3 décadas, passou por altos e baixos em sua trajetória, mas o fato é que ele está mais vivo do que nunca, e continua sendo a melhor ferramenta de programação RAD disponível no mercado!

Para os “velhos” (me incluo nessa) que tiveram a sorte de viver o começo da “era da informática” e experimentar a programação desde sua forma mais crua até as linguagens de alto nível, o Delphi marcou uma revolução na programação para Windows que, arrisco dizer, até hoje não foi superada!

Contextualizando

Comecei a programar com 11 anos de idade, na época, usando um clone do Apple II com 48K de RAM e 1Mhz de CPU. Ele já vinha com o AppleSoft basic nativo e, obviamente, podia-se recorrer ao Assembler do 6502 para algo que exigisse mais performance. Espetando-se uma placa CP/M tornava possível executar o dBase II e criar aplicações acessando bases de dados DBF. Depois, migrei para os clones dos IBM PCs (um AT 286). Nessa época, todos os cursos de computação ensinavam Lotus 123 e dBase III+ e/ou Clipper. Esse era o caminho padrão para praticamente todos os desenvolvedores no Brasil. Perceberam que todos esses softwares rodavam em D.O.S.? Pois é! O Windows 3.1 nem tinha sido lançado!

Foi uma fase no mínimo interessante e única, onde MicroSoft e IBM “brigavam” pelo próximo sistema operacional de sucesso. De um lado o IBM OS/2 (que por sinal, também rodava aplicações do Windows 3.1) e do outro a Microsoft com o Windows! Hoje todos sabemos quem ganhou a briga.

Com o rápido aumento de popularidade do Windows, a demanda por softwares GUI cresceu em um ritmo acelerado. No entanto, as linguagens de programação e IDEs disponíveis na época, além de escassas, eram pouco produtivas. Havia o Microsoft Visual C++, QuickBasic, Visual Basic, além de algumas “bizarrices” no mercado, como o FiveWin (conhecido também por Clipper para o Windows). A própria Borland chegou a lançar um Turbo Pascal para Windows, que gerava aplicações GUI. Nessa época, na maioria das vezes, programar para Windows era basicamente escrever código bruto chamando diretamente as funções da API do Windows.

Felizmente, em 1.995 a tortura acabou!

Delphi 1.0 [1.995]

O Delphi 1.0 foi lançado e chegou oferecendo uma forma de desenvolver aplicações GUI nativas para Windows muito rapidamente e, melhor ainda, de forma visual e usando o velho e bom Pascal como linguagem de programação! Para fechar o pacote com chave de ouro, trouxe também conexão com os principais bancos de dados, além da VCL (Visual Component Library) – uma biblioteca de componentes visuais que facilitava extremamente a vida do desenvolvedor.

Comprei meu Delphi 1 na (falecida) FenaSoft, se não me engano por R$ 50! Me lembro de ter enfrentado fila para comprar!

Não demorou e o Delphi se tornou uma das principais ferramentas de desenvolvimento para Windows no Brasil. As universidades que ofereciam cursos de computação adotaram o Delphi rapidamente, fazendo com que praticamente todos os estudantes daquela época tivessem contato com a IDE, gerando um efeito positivo onde os recém-formados já saíam da faculdade conhecendo o básico, ajudando a suprir uma demanda crescente das milhares de Software Houses que também o adotaram como principal ferramenta de desenvolvimento dos seus softwares.

Com o lançamento do Delphi 1, comecei a migrar meus sistemas do Clipper 5 para o Delphi. A produtividade era absurda! Nessa época, havia muita discussão nos grupos de programadores em relação a qual era o melhor: VB ou Delphi? Posso citar algumas das vantagens:

  • Código mais eficiente/rápido e nativo (sem necessidade do uso de interpretadores/runtimes).
  • Imensa quantidade de componentes visuais – fora a VCL, havia milhares de componentes de terceiros que podiam ser integrados na IDE, para todos os fins e gostos.
  • Melhor suporte à bancos de dados.
  • Object Pascal – linguagem estruturada e orientada a objetos.

Começava a época de ouro do Delphi! Havia uma infinidade de livros no mercado, inclusive em português, além de revistas especializadas (ClubeDelphi, ActiveDelphi, The Club etc), refletindo a forte demanda por informação de qualidade.

Abrindo um parentesis: foi através do Delphi que conheci um tal de InterBase, meu primeiro contato com um banco de dados relacional. Que felicidade! Chega de bases corrompidas e reindexações diárias. E tudo ficou ainda melhor depois de alguns anos, com a chegada do Firebird.

Em 1.996, ou seja, um ano após o lançamento da primeira versão, o Delphi 2 foi lançado, trazendo compilação nativa para 32 bits e possibilidade de desenvolver em 3 camadas para banco de dados, entre outras novidades.

Nogueira, David I e eu, na BorCon 2002

O Delphi era tão forte no Brasil, que a Borland resolveu fazer uma edição local (em português) da sua tradicional conferência: a BorCon! E foi durante uma das BorCons que me encontrei pessoalmente com o Emerson Facunte, iniciando um movimento que culminou com a criação do DUG-BR.

Durante as 3 décadas, o Delphi mudou de mãos algumas vezes, e viveu uma fase complicada (pra dizer o mínimo) nas mãos da Inprise/CodeGear, até finalmente ser comprado pela Embarcadero, que trouxe a ferramenta de volta aos trilhos.

Pedi para as IAs listarem todas as versões do Delphi e seus anos de lançamento, além das principais novidades de cada versão:

Primeiras Versões (Borland):

  • Delphi 1 (1995): A versão inaugural, que revolucionou o mercado com sua interface visual e RAD (Rapid Application Development). Introduziu a linguagem Object Pascal e o framework VCL (Visual Component Library).
  • Delphi 2 (1996): Trouxe suporte para desenvolvimento de aplicações de 32 bits, aprimorando o desempenho e a capacidade dos programas.
  • Delphi 3 (1997): Novos componentes VCL (incluindo Decision Cube e TeeChart), suporte a Active Forms.
  • Delphi 4 (1998): Melhorias na linguagem, IDE (Integrated Development Environment) e VCL, Code Insight, além de suporte para novas tecnologias como COM (Component Object Model).
  • Delphi 5 (1999): Introduziu o suporte para bancos de dados ADO (ActiveX Data Objects) e aprimorou a integração com a Web.
  • Delphi 6 (2001): Trouxe o suporte para desenvolvimento de aplicações Web com IntraWeb e a tecnologia SOAP (Simple Object Access Protocol).
  • Delphi 7 (2002): Uma das versões mais populares, com foco em estabilidade e desempenho, além de melhorias na IDE e na linguagem. Suporte aprimorado a Windows XP (Temas e Estilos).

Transição e Novas Versões (Borland/CodeGear/Embarcadero):

  • Delphi 8 (2003): Versão focada no desenvolvimento para a plataforma .NET, utilizando a linguagem Delphi para criar aplicações gerenciadas.
  • Delphi 2005 (2004): Retorno ao desenvolvimento de aplicações nativas Win32, com melhorias na IDE e na linguagem.
  • Delphi 2006 (2005): Uniu o desenvolvimento para Win32 e .NET em um único ambiente, oferecendo flexibilidade aos desenvolvedores. Incluía Delphi (Win32/.NET), C++Builder e C# em uma única IDE
  • Delphi 2007 (2007): Melhorias na VCL e na IDE, além de suporte para AJAX (Asynchronous JavaScript and XML) para aplicações Web. Focado em Win32.
  • Delphi 2009 (2008): Introduziu recursos como generics e anonymous methods, aprimorando a linguagem e a produtividade.
  • Delphi 2010 (2009): Foco no desenvolvimento para Windows 7 e na criação de aplicações com interfaces mais modernas. Suporte a touch e gestos.
  • Delphi XE (2010): Integração com subversion na IDE, ferramentas de auditoria e métricas de código.
  • Delphi XE2 (2011): Introduziu o FireMonkey, permitindo a criação de aplicações nativas para diversas plataformas. Compilador 64 bits para Windows.
  • Delphi XE3 (2012): Aprimorou o FireMonkey e trouxe novidades para o desenvolvimento de aplicações móveis.
  • Delphi XE4, XE5, XE6, XE7 e XE8 (2013-2015): Continuaram a expandir o suporte multiplataforma e aprimorar a linguagem e a IDE.
  • Delphi 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio e 10.4 Sydney: Versões que trouxeram melhorias contínuas, suporte para novas tecnologias e foco na produtividade dos desenvolvedores.
  • Delphi 11 Alexandria e 12 Athens (2015…): As versões mais recentes, com foco em desenvolvimento multiplataforma, melhorias na IDE e na linguagem, além de suporte para as últimas tecnologias do mercado.

DUG-BR (Delphi Users Group Brasil)

Lançamento oficial do DUG-BR na Saraiva (Marcos, Akira, Facunte, Marcelo, Cantu e Nogueira)

Em 29 de março de 2.003, na Livraria Saraiva em São Paulo, durante o lançamento do livro “Delphi 7 Internet & Banco de Dados” do Emerson Facunte, o DUG-BR foi finalmente anunciado publicamente.

A ideia de montar o grupo veio do próprio Facunte, reunindo pessoas chave da comunidade Delphi da época. O grupo era composto por:

  • Emerson Facunte (Saraiva)
  • Carlos H. Cantu (site FireBase)
  • Marcelo Nogueira (CTA)
  • Marcos Gomes (site Delphi-BR)
  • Sidnei Akira Egashira (site Delphi-BR)
  • Eduardo Rocha (site EduDelphiPage)
  • Marcelo Ribeiro (site Active Delphi)
  • Celso Paganelli (revista The Club – só no início)
  • Gladstone Matos (revista Clube Delphi – só no início)
Edu, Nogueira, Marcos, Facunte, Cantu, Marcelo, Akira e Daniel

A missão do DUG era clara: levar conhecimento sobre Delphi para todos, através de eventos com diversas palestras, os quais batizamos de DDD (Delphi Developers Day). Além de fazer total sentido “semanticamente falando”, a abreviação DDD já era amplamente conhecida por todos os brasileiros, pois era como chamavamos as ligações telefônicas entre cidades (Discagem Direta à Distância). Durante vários anos, fui o presidente do DUG-BR, cargo passado posteriormente para o Marcelo Nogueira.

O primeiro DDD foi realizado em Piracicaba-SP, na Escola de Engenharia de Piracicaba (EEP), em 4 de outubro de 2.003. Mesmo sendo estreantes como organizadores de eventos, ele de cara já foi um sucesso, com mais de 200 pessoas presentes! Os temas das palestras foram: Rave Report, Stored Procedures no IB e FB, Aplicações para internet no Delphi 7 e Desenvolvimento RAD Para Linux.

Vista parcial do público no 1º DDD

Desde o início, adotamos a premissa de que a inscrição para nossos eventos seria a mais barata possível, cobrando basicamente o suficiente para cobrir os custos com aluguel de equipamentos, translados, coffee-break etc. Em suma, o objetivo era não deixar que o fator financeiro fosse um empecilho para a participação de alguém! A inscrição para o primeiro FDD custava R$ 12,00 (sim, você leu certo: doze reais! inacreditável, não?!).

Ao todo, foram realizados 10 DDDs em diversas cidades, entre elas Piracicaba, Bauru, Sorocaba, São Paulo e Uberlândia, até o grupo se dissolver. No final desse artigo você encontra a reprodução do report original do 1º DDD.

Presente e futuro – o que esperar?

Torço para que o Delphi continue evoluindo sem perder sua essencia RAD e ganhando cada vez mais qualidade, e que a Embarcadero/Idera continue investindo e acreditando em seu potencial, e se esforce para trazê-lo de volta às universidades, de onde jamais deveria ter saído!

Durante os 30 anos que faço uso do Delphi, nunca tive que recorrer a outra ferramenta de programação para desenvolver softwares desktop para Windows, dos mais variados tipos. Ele evoluiu, acompanhou e deu suporte às inovações e padrões de mercado que surgiram durante essas três décadas, sem praticamente perder compatibilidade com o código legado e sem deixar de ser a ferramenta RAD que tanto gostamos! Isso não é pouca coisa!

Share and Enjoy !

Erro 12029 ao utilizar Delphi com Kinvey

Situação: Servidor de aplicação desenvolvido em Delphi (Berlin), usando o Kinvey para envio de Push Notifications para celulares Android e iOS.

Problema: De uma hora para outra, não foi mais possível enviar as notificações. O erro retornado era “REST request failed: Error sending data (12029). Uma conexão com o servidor não pode ser estabelecida“.

Ambiente: Windows Server 2012 (100% atualizado através do Windows Update)

Para encurtar a história, depois de muito bater a cabeça, descobri que o problema estava no fato do servidor de aplicação não conseguir conectar o Kinvey usando TLS 1.2. Obs: Nas configurações de Internet do Windows, TLS 1.1 e 1.2 estavam ativas.

Aparentemente o Kinvey passou a exigir TLS 1.2 nas conexões (não sei exatamente em que data isso se tornou obrigatório, possivelmente em 04/Setembro/2018). Olhando nas DLLs carregadas pela aplicação Delphi, percebi que ela faz uso do WinHttp para comunicação. Sendo assim, vasculhando a internet, encontrei esse artigo, da própria Microsoft: Atualização para ativar o TLS 1.1 e o TLS 1.2 como um protocolos de segurança padrão no WinHTTP no Windows.

Após instalar o EasyFix do link acima, tudo voltou a funcionar!

Fica a dica, e também a reclamação do “por que” o WindowsUpdate não ter instalado isso por padrão!

Share and Enjoy !







Listando as propriedades de uma classe

Segue um código (pascal/Delphi) que criei para listar as propriedades que pertencem a uma classe.

O código usa a RTTI do Delphi para “percorrer” as propriedades. A procedure é recursiva, ou seja, se uma das propriedades for também um classe, a procedure chama ela mesma passando como parâmetro a classe da propriedade encontrada.

Para compilar o código abaixo, crie uma nova aplicação VCL e no form principal coloque um TMemo e um TButton, e configure os eventos conforme o código abaixo.

Substitua o segundo parâmetro da chamada a getPropList pela classe que deseja “vasculhar”. O terceiro parâmetro é o quão “profundo” você deseja ir em relação as iterações quando uma propriedade encontrada for uma classe.

Share and Enjoy !







Abrindo arquivos HLP no Windows 10

Desde o Windows 7, a Microsoft não distribui mais o WinHelp (WinHlp32.exe), responsável por abrir os antigos arquivos de ajuda (help).

Para quem ainda usa programas antigos/desatualizados, ou desenvolve software usando componentes antigos que não tiverem o arquivo de ajuda migrados para o novo formato, isso acaba gerando um grande problema.

Até a versão 8.1 do Windows, a Microsoft estava criando instaladores do WinHelp, que podiam ser baixados e instalados manualmente através do link https://support.microsoft.com/pt-br/kb/917607. No entanto, até o momento (Nov/2015), não há uma versão disponível para o Windows 10.

Vasculhando a internet, encontrei um link onde mencionavam uma alternativa (gambiarra) para conseguir instalar o WinHelp no Windows 10 e, portanto, abrir os arquivos .hlp. Basicamente, oque deve ser feito é:

  1. Baixe o arquivo disponível em http://www.komeil.com/download/1230
  2. Descompacte (com o WinRar, etc) o conteúdo do arquivo baixo em uma pasta temporária qualquer.
  3. Entre os arquivos extraídos, está o install.cmd
  4. Edite o install.cmd no bloco de notas, e deixe o conteúdo da seção Settings como no exemplo abaixo (basicamente, insira as duas linhas que estão em negrito).
  5. Grave as alterações.
  6. Baixe o arquivo 7zip disponível em http://www.komeil.com/download/2968 e extraia os arquivos winhlp32.exe e winhlp32.exe.mui encontrados em “50.0.6001.18001 Windows Vista & Windows Server 2008 KB917607 updated functional” e substitua os originais gerados pelo passo 2 acima.
  7. Execute o Install.cmd como Administrador.

Fazendo isso, você conseguirá abrir os antigos arquivos de help, no Windows 10.

Os passos abaixo são necessários caso a opção de Busca (Find) do WinHelp não esteja funcionando devido a falta do arquivo ftsrch.dll:

  1. Entre em http://originaldll.com/file/ftsrch.dll/1047.html e baixe a DLL
  2. Se seu Windows for 64bits, grave-a na pasta c:\Windows\SysWow64, se for 32bits, grave-a na pasta c:\Windows\System32
  3. Note que parar gravar nessas pastas, você precisa ter permissões de Administrador.

Com isso, a opção de Busca deve passar a funcionar.

:: --------------------------------
:: Settings

set MuiFileName=winhlp32.exe.mui
set ExeFileName=winhlp32.exe
set WindowsVersion=7
goto :BypassVersionError

Share and Enjoy !







Rad Studio XE2 vem aí!

A Embarcadero, atual “dona” do Delphi, começou a anunciar as novidades da próxima versão do Rad Studio, e também uma turnê mundial de apresentação do novo produto, que passará por algumas cidades do Brasil.

Entre as novidades, está o tão aguardado (pelo menos por alguns) suporte a 64bits (o Delphi poderá compilar aplicações para rodar em 64bits no Windows), além da possibilidade de criar aplicações nativas tanto para Windows como para MacOSX! Os controles VCL aparentemente também foram “modernizados” com a possibilidade de se utilizar “temas” a fim de alterar a aparência dos mesmos.

Uma nova tecnologia, chamada de FireMonkey, possibilitará a criação de aplicações gráficas, aproveitando os recursos de GPUs, possibilitando o uso de efeitos de transição, etc, em HD e 3D.

Apesar de não fornecer detalhes, o RadPHP (antigo Delphi for PHP) aparentemente vai possibilitar o desenvolvimento de aplicações para iOS e Android.

Após uma quase “morte” (enquanto estava nas mãos da falecida Borland), é muito bom ver que a Embarcadero está investindo e modernizando o produto, inserindo novos recursos e tecnologias e atendendo alguns anseios dos desenvolvedores.

Não esqueça de se cadastrar para concorrer a 3 cópias do Rad Studio.

Share and Enjoy !







Lazarus, progredindo e ficando mais estável!

Há alguns anos atrás, logo depois de ter adquirido meu primeiro dispositivo com Windows Mobile (eca!), tentei criar uma aplicação simples compatível com Windows CE, para ver o quão difícil seria.

Como nosso Delphi até hoje não tem essa capacidade, e não estava a fim de usar .Net nem qualquer outra linguagem da MS, o caminho mais obvio foi usar o Lazarus/FreePascal, mas sem muito sucesso: inúmeros erros na instalação, compilação, etc.

Ontem, resolvi tentar novamente. Baixei o instalador do Lazarus e do compilador add-on pra WinCE (ambos versões snapshot), e logo de cara me espantei: Ambos instalaram sem qualquer problema!

Em seguida, baixei um exemplo de código feito em Lazarus, para acessar o GPS do PDA. Após baixar algumas units que não estavam incluídas no download do código fonte da aplicação, compilei e rodei normalmente no Windows XP. Configurei então as opções do projeto para gerar código WinCE, compilei novamente, e vualá! Uma aplicação WinCE, sem precisar mudar uma linha de código sequer!

Copiei a aplicação (13MB!!!!) para o PDA, e funcionou logo de primeira! O tamanho do arquivo deixa claro que o FreePascal ainda precisa melhorar nessa área. Felizmente, desligando as opções de informações de debug, o tamanho do arquivo diminuiu para 1.8MB (que diferença! mas fica mais difícil debugar os problemas).

Existe uma biblioteca chamada KOL-CE, que permite criar aplicações GUI para Win32/WinCE que ficam bem menores do que as nativas do Lazarus. No entanto, a última versão do FreePascal tem algumas incompatibilidades com o código da KOL-CE, portanto, não consegui usa-la.

Resolvi escrever minha própria aplicação. Criei um componente para acessar o GPS via porta serial. Compilou de primeira!

Os primeiros problemas começaram com a interface da aplicação:

Fiz uma interface muito simples, com um PageControl, alguns labels, etc. Rodando no Win32, tudo perfeito! Ao gerar para WinCE e jogar no PDA, os labels simplesmente não apareciam! Uma Googlada rápida e descobri que é um bug da versão atual do LCL (equivalente ao VCL do Delphi). Solução gambiarra: inserir um TPanel dentro do TabSheet e colocar os componentes dentro do Panel, fazendo assim com que eles sejam “pintados” na tela. Feito isso, tudo blz!

O que me deixa mais feliz com tudo isso, é ver que o Lazarus/FreePascal tem progredido, apesar que lentamente. O fato de se poder utilizar uma mesma base de código para criar aplicações (inclusive GUI) multi-plataforma, é um sonho de qualquer programador.

A falecida Borland tentou algo nessa área, via Kylix. Infelizmente, não vingou. O FreePascal parece estar no caminho certo. Fico torcendo para que o ritmo de desenvolvimento aumente, e para que a ferramenta fique cada vez mais completa e estável.

Dica:

  1. A nova versão do Lazarus é compatível com arquivos DFM do Delphi.
  2. Apesar da maioria dos comandos, funcões, etc. serem equivalentes ao que estamos acostumados no Delphi, deve-se ficar atento à algumas diferenças, por exemplo: FloatToStr no FreePascal utiliza o DecimalSeparator para fazer a conversão. No Delphi, o “.” é sempre utilizado como separador decimal.
  3. As versões snapshot, apesar de não serem testadas, tem a vantagem de incluirem as correções mais recentes (mas podem incluir novos bugs também).
  4. O FreePascal/Lazarus produz código 64bits (coisa que o Delphi ainda não faz).

PS: Agora preciso descobrir como fazer para gravar audio do microfone do PDA para um arquivo .wav

Share and Enjoy !







1 2 3