VoidByte

Programar é pensar, muito mais que codificar

Verificando a Versão do Compilador

1372276943_malicious_codeA solução incômoda

As versões do DELPHI tem evoluído com o tempo, acrescentando novos recursos e avanços. A evolução é boa, mas há situações em que o código só funciona com as versões mais recentes.

As funções de API do WINDOWS, por exemplo, tiveram alterações nos tipos dos argumentos. Os tipos dos argumentos mudaram de PCHAR para PWIDECHAR. O que fazer então? Muitos usam a sintaxe abaixo:

{$IFDEF VER220}// Delphi XE
{$DEFINE ARG_PWIDECHAR}
{$ENDIF}

{$IFDEF VER230} // Delphi XE2
{$DEFINE ARG_PWIDECHAR}
{$ENDIF}

A correção funciona, mas tem seus inconvenientes. O fato é que as diretivas VERXXX,  que variam conforme a versão do DELPHI, tem que ser verificadas individualmente, como no exemplo acima.

O código fica estranho, parece estar duplicado. Quando a versão mudar para VER240 OU VER250 a verificação deixará de funcionar, exigindo manutenção do código.

A solução elegante

A solução anterior funciona,  mas está propensa a falhas,  Ao fazer uma  pesquisa mais detalhada a respeito destas diretivas, fiquei surpreso ao  descobrir um recurso útil para resolver a questão das versões:

{$IF COMPILERVERSION > 21}
{$DEFINE ARG_PWIDECHAR}
{$IFEND}

 

O par $IF . . .  $IFEND  tem a mesma função do $IFDEF . . . $ENDIF. A versão  do compilador do DELPHI, COMPILERVERSION,  é uma constante numérica, o que permite fazer comparações usando os operadores ‘=’, ‘<‘  e ‘ >’.

Com a verificação da versão do compilador, o código acima definirá a condicional ARG_PWIDECHAR. A condicional será usada para indicar o uso de argumentos tipo PWIDECHAR apenas se a versão do DELPHI for superior ao DELPHI 2010. Abaixo a lista de valores com a versão de cada compilador e com o símbolo de  diretiva correspondente.

Compilador Versão Símbolo
Delphi XE4 25 VER250
Delphi XE3 24 VER240
Delphi XE2 23 VER230
Delphi XE 22 VER220
Delphi 2010 21 VER210

Essa é a dica, use o método elegante, mantenha seu código limpo e claro.

Bom código!

Deixe um comentário

Engenharia de Software

Este blog tem como meta apresentar algumas discussões e opiniões relacionadas a engenharia de software. O blog foi criado pelo professor José Augusto Fabri da Universidade Tecnológica Federal do Paraná em 2008. Espero que vocês aproveitem os textos aqui apresentados.

Roberto Schneiders

A blog about experiences on software development

Meu mundo - Carlos Eduardo

Just another WordPress.com weblog

Delphi, Delphi Prism, Visual Studio, C#, ASP.NET

Para todos aqueles amantes da arte do desenvolvimento de Software.

Anderson Silva

Tecnologia da informação pra quem gosta de TI

reGIFELix

Alimentando o vicio pela informação e conhecimento em Java e Web Design

Diego Garcia

Delphi, Scrum, Arquitetura de Software e um pouco mais...

Ricardo Boaro

Embarcadero MVP

Blog do Fusco

Visões sobre Transformação Digital, Empreendedorismo, Inovação e Tecnologia da Informação

Leandro Cunha facts

Meu mundo virtual

simasware blog

Desenvolvimento e Software Livre