Delphi Academy in Portuguese and Spanish

This week I did the broadcast of the latest episodes from Delphi Academy for the current year.

For everyone who isn’t aware, Delphi Academy occurs in a interval of 15 days, on Tuesdays in Portuguese and Fridays in Spanish, covering the same topic in both idioms in each week.

All the episodes (18 so far) and samples are available right after each broadcast, and you can find the repositories here:

I’d like to thanks everyone who participated with us this year!

Right in the beginning of 2017 we’ll be back with a new agenda for both idioms, stay tuned!

 

 

 

 

Advertisements

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

Introdução

O suporte para múltiplas plataformas tem motivado muitas companhias a migrarem seus projetos para as versões mais recentes do RAD Studio, estejam eles utilizando Delphi ou C++ Builder. Em breve estaremos suportando mais uma plataforma de maneira 100% nativa, Linux 64 bit, e este movimento deve se intensificar.

Pensando nisso, estou iniciando uma série de artigos a respeito de migração, sendo este o primeiro deles. Vou tentar reunir aqui recursos que estão disponíveis e que podem auxiliar no processo de migração, e também compartilhar a experiência de alguns processos de atualização junto a alguns de nossos clientes.

Existem alguns temas recorrentes (e muito sensíveis) em um processo de migração. Abaixo estou listando os principais, sendo que a ordem não necessariamente atribui aos mesmos um grau de importância:

  • Suportar Unicode em todo o projeto
  • Migrar o framework de acesso a dados
  • Passar a compilar para 64 bit no Windows
  • Migrar ou remover componentes de terceiros
  • Migrar o middleware (quando em uso)

Temos também outros tópicos que não estão exatamente relacionadas a migração, mas sim a expansão da aplicação para outras plataformas, já que no Delphi/C++ temos o benefício de utilizar exatamente o mesmo código-fonte para múltiplas arquiteturas:

  • Migrar de uma plataforma de banco de dados para outra
  • Suportar múltiplas plataformas de banco de dados simultaneamente
  • Passar de uma aplicação originalmente Windows para múltiplas plataformas

Cada um destes macro tópicos será tratado em um ou mais artigos individualmente, e novos poderão ser adicionados de acordo com seu feedback!

Para dar o pontapé inicial, vamos falar de Unicode, um tema abstrato para a maioria da comunidade, o qual pode significar ao mesmo tempo uma enorme dor de cabeça em seu projeto, ou literalmente nada. Tudo vai depender do contexto de sua aplicação. Hoje vamos entender o que é Unicode e sua importância.

Sobre Unicode

The Unicode Blog

Unicode foi criado e segue sendo mantido pelo Unicode Consortium, uma entidade criada por desenvolvedores: http://www.unicode.org/

Em sua definição podemos encontrar a seguinte declaração (em tradução livre):

Unicode fornece um número exclusivo para cada carácter,
Não importa qual plataforma,
Não importa qual aplicação,
Não importa qual linguagem.

Existe também um blog oficial (http://blog.unicode.org/) onde você pode encontrar artigos interessantes sobre padrões e versões da especificação do Unicode, atualmente em sua versão 9.0 (http://www.unicode.org/versions/Unicode9.0.0/).

Definições e Objetivos

Unicode é um padrão para a definição e identificação de caracteres e símbolos em todas as línguas escritas, atribuindo um valor único a cada caractere ou símbolo. O Consórcio Unicode define qual número (ponto de código) representa qual caractere ou símbolo.

Em 1991, obtivemos o Unicode versão 1.0.0, que foi estendido para 1.0.1 e 1.1 de acordo com o padrão ISO-10646. Originalmente, o Unicode 1.1 estava limitado a 64K caracteres e símbolos, o que significava que 2 bytes eram suficientes para codificar todos os caracteres. Infelizmente, o 64K também era insuficiente para suportar todas as línguas escritas no mundo.

Como resultado, o Unicode 2.0, a partir de junho de 1996, estendeu o número de pontos de código para $ 10FFFD caracteres e símbolos (1.114.109 para ser exato). No momento da escrita, o Unicode 9.0 é atual, para o qual o Consórcio Unicode já definiu 128.172 caracteres no padrão.

Formatos de Transformação Unicode

Os dados Unicode (os valores de ponto de código) podem ser apresentados em diferentes formatos, como UTF-8, UTF-16 ou UTF-32. Também podemos opcionalmente comprimir dados Unicode. UTF significa Unicode Transformation Format, e cada UTF define o mapeamento entre um ponto de código para uma série única de bytes que representam esse ponto de código. Assim, onde o próprio Unicode define o caractere ou símbolo que pertence a um ponto de código, o UTF define a representação física (no arquivo no disco ou na memória, por exemplo).

UTF-8
Usando UTF-8, temos entre 1 e 4 bytes para cada caractere Unicode.

UTF-16
Usando UTF-16, obtemos 2 ou 4 bytes para cada caractere Unicode. Esta codificação é mais fácil e mais rápida de processar do que UTF-8.

UTF-32
Usando UTF-32 sempre obtemos exatamente 4 bytes para cada caractere Unicode. Esta é a codificação mais fácil de todas, mas também a que resulta no maior espaço de armazenamento.

API do Windows
Desde Windows NT e 2000, a API do Windows oferece suporte a dois conjuntos de APIs: um para ANSI (A) e um para caracteres Unicode (W), portanto, outra importante razão para você migrar sua aplicação para um compilador mais recente.

Unicode no Delphi/C++ Builder

Feitas as apresentações e formalidades, no próximo artigo iniciaremos por explorar os recursos e técnicas para migração de sua aplicação “Pré-Unicode”, seja tornando-a 100% aderente ao padrão Unicode, ou simplesmente garantindo que ela irá se comportar bem com os novos compiladores e sistemas operacionais, caso você não necessite realmente de suporte a múltiplos idiomas e caracteres estendidos.

Até breve!