Modernize Studio
Idioma: Português
Escreva-nos

As suas aplicações Delphi, levadas para a web

Nos anos 90 e 2000 o Delphi era uma escolha comum para software de gestão, e muitos desses programas continuam em uso todos os dias, muitas vezes com tabelas Paradox ou dBase lidas através do BDE. Migramo-los para aplicações web sobre uma base de dados SQL, com os mesmos dados e as mesmas regras, para que deixe de precisar de PC configurados ao pormenor para os pôr a funcionar.

Porquê agora

A Embarcadero, que hoje desenvolve o Delphi, declarou obsoleto o Borland Database Engine. A sua documentação afirma que o BDE não vai ser melhorado, nunca suportará Unicode e não deve ser usado em novos desenvolvimentos, e sugere a passagem para o FireDAC. Ainda assim, a maioria dos programas Delphi antigos continua a ler e a escrever as suas tabelas Paradox ou dBase através dele.

O BDE foi concebido para o Windows de 32 bits e para a partilha de ficheiros numa rede local. As tabelas Paradox numa unidade partilhada dependem de ficheiros de bloqueio e de configurações do BDE que têm de ser idênticas em todos os PC, e quando uma máquina as tem mal, tabelas e índices podem danificar-se. Cada PC novo, e cada passagem para uma nova versão do Windows, é mais uma instalação a configurar à mão.

  1. Windows 10Fim do suporte da Microsoft

O que migramos

O programa e os ficheiros de dados de que depende, seja qual for o estado em que se encontrem.

  • Formulários e controlos ligados aos dados

    Formulários dos ficheiros .dfm com TDBGrid, TDBEdit, TDBLookupComboBox e estruturas principal e detalhe. Passam a páginas web com os mesmos campos e a mesma sequência de trabalho.

  • Dados Paradox, dBase e InterBase

    Tabelas lidas através do BDE, ou bases de dados como InterBase, Firebird, SQL Server e Oracle. Passamos os dados para SQL Server ou MySQL mantendo chaves, índices e relações.

  • Data modules e lógica de negócio

    Código nas units TDataModule, nos eventos dos datasets como BeforePost e OnCalcFields e nos campos calculados e de pesquisa. Reunimos estas regras em serviços do lado do servidor.

  • Relatórios

    Layouts QuickReport, ReportBuilder, Rave Reports ou FastReport, incluindo os que têm código nos seus eventos. Passam a documentos PDF com o mesmo conteúdo.

  • Componentes de terceiros

    Grelhas, editores e utilitários de pacotes como DevExpress, TMS, InfoPower ou RxLib, muitas vezes ligados a uma única versão do Delphi. Verificamos que funções o programa usa de facto.

  • Importações, exportações e tarefas agendadas

    Trocas de ficheiros de texto e CSV com outros sistemas, exportações para o contabilista e programas lançados pelo Agendador de Tarefas do Windows. Passam a tarefas agendadas no servidor.

Como fica a versão web

Exemplo ilustrativo, dados fictícios

Um programa de armazém como poderia aparecer em Delphi no Windows XP, e os mesmos dados numa aplicação web.

Arraste o manípulo ou use as setas do teclado.

Para onde vai cada parte

No Delphi: Formulários (.dfm) e units (.pas)
Na aplicação web: Páginas web, com a lógica no servidor
No Delphi: Tabelas Paradox ou dBase através do BDE
Na aplicação web: SQL Server ou MySQL, com chaves e relações
No Delphi: Campos calculados e de pesquisa
Na aplicação web: Cálculos e junções na base de dados ou nos serviços
No Delphi: Aliases e configurações do BDE em cada PC
Na aplicação web: Uma única ligação, configurada no servidor
No Delphi: Layouts QuickReport ou FastReport
Na aplicação web: Documentos PDF gerados pelo servidor
No Delphi: Uma unidade de rede partilhada por todos
Na aplicação web: Acessos em simultâneo geridos pela base de dados

Como decorre a migração

  1. Análise em 48 horas

    Envia-nos o programa com a respetiva pasta de dados (ficheiros Paradox ou dBase, ou uma cópia de segurança da base de dados), e o código-fonte (.dpr, .pas, .dfm), se o tiver. Em 48 horas respondemos com um relatório escrito: o que o programa faz hoje, onde estão os riscos, como se organizaria a versão web, um preço fixo para um módulo-piloto e uma estimativa para o resto. É gratuito e não o compromete a nada.

  2. Módulo-piloto

    Construímos uma parte da aplicação sobre uma cópia dos seus dados reais, normalmente a parte mais usada. Os seus colaboradores trabalham com ela no dia a dia antes de decidir o resto.

  3. Os mesmos dados, os mesmos resultados

    Passamos os mesmos registos pelo programa Delphi e pela nova aplicação e comparamos stocks, totais e documentos impressos. Cada regra de negócio que encontramos passa também a um teste automático, repetido antes de cada nova versão. Recebe um relatório com o resultado de cada verificação.

  4. 30 dias em paralelo

    Quando a aplicação completa estiver pronta, o programa Delphi continua em uso ao lado dela durante 30 dias. Qualquer diferença aparece enquanto o programa antigo ainda lá está, e corrigimo-la dentro do preço acordado.

Armadilhas típicas, e como as tratamos

  1. Como se comportam o BDE e o Paradox

    As tabelas Paradox dependem de ficheiros de bloqueio, de um ficheiro de controlo de rede partilhado (PDOXUSRS.NET) e de configurações do BDE como LOCAL SHARE, que têm de ser iguais em todos os PC. Índices danificados e erros «Table is busy» são frequentes. Antes da migração reparamos o que pode ser reparado e comunicamos-lhe os registos que não se conseguem ler.

  2. Codificação dos caracteres

    O BDE guarda o texto numa página de código definida pelo language driver da tabela, enquanto o Delphi 2009 e as versões seguintes usam strings Unicode. Letras acentuadas e símbolos são onde uma migração mais costuma falhar, por isso verificamos a codificação de cada tabela e comparamos consigo amostras do texto convertido.

  3. Lógica escondida nos eventos dos datasets

    As regras em BeforePost, OnValidate ou OnCalcFields são executadas em silêncio sempre que um registo é guardado ou mostrado, e passam facilmente despercebidas a quem só olha para os formulários. Procuramos no código cada handler de evento e listamos as regras que aplica.

  4. Campos calculados e de pesquisa

    Campos que só existem no programa, não nas tabelas, aparecem no ecrã e nos relatórios como se fossem dados guardados. Reproduzimo-los como valores calculados e comparamo-los com os originais.

  5. Componentes sem código-fonte

    Alguns pacotes de terceiros foram comprados como units compiladas para uma única versão do Delphi. Se o programa usa algum deles para um cálculo, e não só para a apresentação, reconstruímos o comportamento a partir dos resultados e confirmamo-lo pondo os dois programas a trabalhar com os mesmos dados.

  6. Formatos de datas e números

    Os campos de data do Paradox e do dBase, os anos com dois dígitos introduzidos há muito tempo e os separadores decimais que dependem das definições regionais do Windows exigem um tratamento explícito quando os dados passam para uma base de dados SQL. Listamos as anomalias encontradas durante a importação e resolvemo-las consigo.

Preço e pagamento

Análise

Gratuita

por escrito, em 48 horas

Módulo-piloto

1000–1500 €

normalmente; 50% no início, 50% na aceitação

Condições de pagamento

Pedimos 50% no arranque e 50% na aceitação. A segunda metade é paga antes da entrada em produção e da entrega do código-fonte. Nos projetos maiores, os pagamentos acompanham as fases acordadas.

A análise é gratuita. Se decidir não avançar, fica com o relatório e não deve nada.

Os preços são fixos e acordados por escrito antes de começarmos. Se o trabalho mudar, enviamos um novo orçamento escrito e só avançamos com a sua aprovação.

Numa migração completa, o nosso objetivo é ficar 40 a 60% abaixo do orçamento habitual de uma agência. É possível porque somos um estúdio pequeno, sem escritórios para pagar nem equipa comercial.

Preços sem IVA.

Estimar o preço

Uma migração real, verificada por testes

A Northwind é a base de dados de exemplo que a Microsoft distribuía com o Access, não um cliente nosso. Migrámos uma cópia pública para SQLite e PostgreSQL, comparámos cada tabela e cada consulta com o original através de testes automáticos e construímos sobre o resultado uma aplicação web funcional. O caso de estudo apresenta os números, e o relatório de equivalência enumera cada verificação.

A Northwind é uma base de dados Access, mas para Delphi seguimos o mesmo método: migrar, comparar os resultados com os do original sobre os mesmos dados e manter os dois programas em paralelo.

Relatório de equivalência (em inglês) · Pré-visualização clicável e análise de exemplo (demonstração)

Perguntas frequentes

O nosso programa Delphi usa tabelas Paradox numa unidade de rede. Conseguem migrar os dados?

Sim. Lemos diretamente os ficheiros Paradox ou dBase, convertemo-los para SQL Server ou MySQL e comparamos o número de registos e os totais antes e depois. Os registos danificados são-lhe comunicados, não descartados em silêncio.

Não poderíamos simplesmente passar para uma versão mais recente do Delphi?

É uma opção, e para alguns programas é a mais sensata: a aplicação continua a ser um programa Windows, o FireDAC substitui o BDE e o código é atualizado. Se precisa de acesso a partir de qualquer navegador, sem instalar nada nos PC, uma aplicação web é a melhor escolha. Quando ambas fazem sentido, a análise compara-as.

Não temos o código-fonte. É um problema?

Não necessariamente. Podemos trabalhar a partir do programa em uso, dos seus ficheiros de dados e de gravações da forma como as pessoas o usam. Com o código-fonte a análise é mais precisa, e quando falta informação dizemo-lo.

Com que versões do Delphi trabalham?

Com programas escritos em qualquer versão, das primeiras da Borland nos anos 90 às atuais da Embarcadero. A versão conta sobretudo para o tratamento das strings e para os componentes disponíveis, e indicamo-la na análise.

A aplicação web pode continuar a usar a nossa base de dados Firebird ou InterBase?

Sim, se outros programas ainda dependerem dela. Nesse caso a aplicação web liga-se à mesma base de dados, e a mudança de base de dados pode acontecer mais tarde, ou nunca.

O que acontece nos 30 dias de funcionamento em paralelo?

A sua equipa mantém o programa Delphi à mão enquanto trabalha na nova aplicação, para poder comparar os resultados no trabalho real. Qualquer diferença que encontremos nesse período é corrigida dentro do preço acordado.

Contacto

Escolha o canal que mais lhe convier. Respondemos por e‑mail, em português, no prazo de um dia útil.

Por e‑mail

riccardo@modernizestudio.com
Escrever um e‑mail

Envie-nos o programa e a respetiva pasta de dados, se preferir com dados de teste, ou uma breve descrição do que faz. Respondemos no prazo de um dia útil.

Envie-nos o seu ficheiro

Se o programa for em Access, Excel, VB6, Delphi ou numa versão antiga de .NET, recebe uma análise escrita gratuita no prazo de 48 horas após o envio do ficheiro.

  1. Faça uma cópia do ficheiro, se preferir com dados de teste.
  2. Anexe-a ao formulário ou a um e‑mail, de preferência num arquivo protegido por palavra-passe, enviando a palavra-passe à parte. Se o pedir, assinamos antes um acordo de confidencialidade.
  3. Em 48 horas: a análise e um preço fixo para um módulo piloto.

Trabalhamos a partir de Itália.

Enviar uma mensagem

Opcional. Uma base de dados, um livro do Excel, capturas de ecrã ou um caderno de encargos, até 10 MB. Para ficheiros maiores, indique na mensagem uma ligação para os descarregar.

Escreva-nos

O botão abre o seu programa de e‑mail com a mensagem já preparada. Nada é enviado até carregar em «Enviar» nesse programa.

Escreva-nos