Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
Migrando para o Delphi 7
Técnicas e cuidados para portar do D5 para o D7
Neste artigo apresentarei algumas técnicas utilizadas para migrar aplicações construídas em Delphi 5 para o Delphi 7. As principais mudanças entre as versões aconteceram no Delphi 6, como o a criação da unit Variants e das units de design de componentes, DesignEditors e DesignIntf, em substituição à unit DsgnIntf. Outra grande mudança foi a migração do BDE para dbExpress, mas não trataremos desse assunto aqui, deixando-o para outro artigo.
Nossa aplicação, mesmo migrada pra Delphi 7, poderá ainda ser compilada em Delphi 5, pois, em uma grande empresa com vários desenvolvedores, a migração para Delphi 7 pode levar um certo tempo, e outros programadores precisam continuar trabalhando no Delphi 5 até todos os fontes serem totalmente portados para o Delphi 7[FVM1] .
Muitas das técnicas mostradas aqui são as mesmas para migrar de Delphi 3 para Delphi 7, ou do Delphi 4 para o Delphi 6. Isso porque, como mencionado, as principais mudanças aconteceram da versão 5 para a versão 6.
Variants
Como sabemos, o Delphi permite a utilização de variáveis do tipo Variant, que podem se comportar como inteiros, strings, arrays etc. O suporte a Variants foi introduzido no Delphi 2 principalmente para dar suporte à Automação OLE. Com o MIDAS e a programação COM, o uso de variants tornou-se ainda mais comum, pois são usadas para passagem de tipos complexos entre servidores de aplicações e clientes.
No Delphi 5 e em versões anteriores, o código de manipulação de variants (rotinas como VarArrayOf, VarIsEmpty, além do próprio tipo Variant) estava declarado na unit System, a qual é utilizada em todas aplicações que você cria.
O Delphi 6 introduziu muitas melhorias na RTL (mudanças que também existem no Delphi 7, é claro). Uma dessas melhorias foi retirar da unit System todo o código relativo ao tratamento de variants, colocando todos os tipos e funções em uma nova unit chamada Variants. Com isso, a unit variants não fica diretamente relacionada ao suporte a componentes COM, o que torna a unit compatível com o Kylix. Observe a cláusula uses de uma aplicação recém-criada no Delphi 7:
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Formulários, Dialogs;
Devido a essa mudança, raramente uma aplicação feita em Delphi 5 pode ser portada para o Delphi 7, sem que sejam feitas alterações no código fonte. Ao tentarmos abrir uma aplicação Delphi 5 no Delphi 7, o compilador irá acusar um erro no primeiro código que utilize variants, como mostra a Figura 1.