Windows 10 Store, Android, iOS, OS X, Linux: recursos para migrar sua aplicação Delphi/C++ Builder e suportar TODAS as plataformas (parte 3)

Nos últimos dois artigos aqui e aqui discutimos basicamente sobre Unicode e seu impacto na migração de projetos Delphi (e também C++) para a versão mais recente do produto.

Neste post, a terceira parte desta série, vamos discutir migração para 64 bit.

Desde XE2, tem sido possível gerar aplicativos de 64 bits Delphi e C++ a partir da mesma base de código 32 bits. A importância de 64 bits para empresas é abordado neste artigo “The Impact of 64-bit Applications to your Company’s Bottom Line“.

Toda a mudança para 64 bits é incrivelmente simples de ser executada! Pode ser tão simples como adicionar a plataforma de destino Windows 64bit  no gerenciador de projetos e reconstruir o projeto.

Minha experiência ao falar com muitos desenvolvedores é que normalmente há algumas coisas para verificar em seu código, mas normalmente não é uma tarefa maciça para obter a compilação e estar pronto para testar.

Muita coisa foi gravada com relação a migração de 32 para 64 bit e este deve ser um bom resumo se você está planejando esta migração. Se você estiver construindo aplicativos iOS, então você precisará usar a compilação de 64 bits para entrar na AppStore. Felizmente, RAD Studio torna a tarefa de usar 64 bits muito simples em todas as plataformas, e tem nos protegido das dores de cabeça que os desenvolvedores de outras plataformas tiveram em geral.

Vamos começar com este pequeno vídeo de David I que cobre algumas das principais características:

O que é igual entre 32 e 64 bit?

Integer, LongInt, Cardinal – permanecem 32bit em ambas as plataformas. Int64 e UInt64 são 64bit (8bytes) em ambas as plataformas.

Unicode String, AnsiString, WideString etc. são todos os mesmos. Trabalhe da mesma maneira e use as mesmas chamadas RTL.

Manipulação de exceção também é o mesmo! Você pode definir pontos de interrupção e eles funcionam da mesma maneira ao depurar, as exceções que são geradas ainda são tratadas da mesma maneira.

As unidades que você usa são ainda as mesmas, por exemplo, SysUtils, Classes etc. O RTL (Run Time Library) ainda é o mesmo.

Diferenças entre 32 e 64 bit

Existem alguns tipos que são diferentes, dependendo da plataforma para a qual você compila.

NativeInt e NativeUInt são 32 bits ou 64 bits / 4 ou 8 bytes, dependendo da plataforma de destino. As matrizes dinâmicas usam indexação de 64 bits em uma compilação de 64 bits. Os processadores de 64 bits não têm o mesmo tipo estendido que existe no 32bit, o que significa que o tipo Extended reverte para DOUBLE em 64 bits.

Mas o ponto-chave são os ponteiros, os quais são todos de 64 bits em versões de 64 bits. Isso significa algumas coisas. Em primeiro lugar, todos os objetos têm um ponteiro maior do que um Integer. Então, se você tem usado typecasting para Integer em seus ponteiros… precisa revisar isso!

Tipos de ponteiro que são 4 bytes no código 32 bits e 8 bytes no código de 64 bits, incluindo:

  • Pointer
  • String
  • Class Instance
  • Class reference
  • Interface
  • AnsiString
  • WideString
  • UnicodeString
  • Procedure Pointer
  • Dynamic Array
  • PAnsiChar
  • PWideChar
  • PChar

Você está usando a propriedade TAG para armazenar ponteiros?

Felizmente a equipe atualizou a propriedade Tag em TComponent para ser um NativeInt, por isso será 4/8 bytes, dependendo da plataforma para não quebrar seu código!

Pre-defined conditions

O compilador Delphi 64 bits introduziu um número de novas condições pré-definidas. Embora você não precise usá-los regularmente, eles podem ser usados se você quiser manter algum código otimizado para o Win32 ou Win64.

Condições pré-definidas permitem que blocos de código específicos sejam compilados dependendo da plataforma. O bloco a seguir mostrará o Win32 como uma mensagem de exibição somente em versões do Windows 32 bits.

procedure FazAlgumaCoisa;
var
  S : string;
begin
{$IFDEF WIN32}
  S := 'Aqui é Win32';
{$else}
  S := 'Aqui não é Win32';
{$ENDIF}
  ShowMessage(S);
end;

Recursos Adicionais

Advertisements

2 thoughts on “Windows 10 Store, Android, iOS, OS X, Linux: recursos para migrar sua aplicação Delphi/C++ Builder e suportar TODAS as plataformas (parte 3)

  1. Pingback: Windows 10 Store, Android, iOS, OS X, Linux: recursos para migrar sua aplicação Delphi/C++ Builder e suportar TODAS as plataformas (parte 4) | It's All About Code!

  2. Pingback: Windows 10 Store, Android, iOS, OS X, Linux: recursos para migrar sua aplicação Delphi/C++ Builder e suportar TODAS as plataformas (parte 5) | It's All About Code!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s