Entendendo Unicode para migrar sua aplicação Delphi

 

Um grande desafio para nossa equipe de R&D foi incorporar o suporte a Unicode em toda a VCL, conseqüentemente no IDE, uma vez que Delphi é feito em Delphi.

Durante todo o desenvolvimento do Delphi 2009, tivemos reuniões com várias empresas desenvolvedoras de componentes e Allen Bauer, Delphi Chief Scientist, através do seu blog comentou sobre o suporte a Unicode. Estas iniciativas foram fundamentais para permitir que componentes de terceiros estejam disponíveis rapidamente para o Delphi 2009 e informar aos desenvolvedores como trabalhar com Unicode.

Unicode é um padrão que permite aos computadores representar e manipular, de forma consistente, texto de qualquer sistema de escrita existente.

The Unicode Standard: Version 5.0. 5. ed. Addison-Wesley Professional, 2006. 1472 p

Diversos conjuntos de caracteres como chineses, japoneses, russos e outros de origem asiáticas são representados através de Unicode, utilizando, na maioria dos casos, sistemas de mapeamento e codificação UTF (Formato de Transformação Unicode) e UCS (Conjunto Universal de Caracteres). Para maiores detalhes sobre Unicode, recomendo o seguinte link: http://pt.wikipedia.org/wiki/Unicode.

O resultado foi um Delphi 100% Unicode, sem exceção. Você deve estar se perguntando, a migração é tranqüila? Podemos dizer que sim, muita coisa foi tratada pela VCL e pelo compilador.

Uma das grandes mudanças foi nos tipos String, que anteriormente era baseado em padrão ANSI. Agora estão baseadas em padrão UNICODE. Os tipos AnsiString e WideString continuam funcionando da mesma forma, exceto para tamanho de dados.

Resumo das mudanças para Unicode:

  • String mapeia UnicodeString e não mais AnsiString
  • Char agora mapeia WideChar (2 bytes e não 1 byte) e é um caractere UTF-16
  • PChar mapeia PWideChar
  • AnsiString mapeia o antigo tipo String

Não ocorreram mudanças:

  • AnsiString
  • WideString
  • AnsiChar, PAnsiChar
  • Short String contém elementos AnsiChar
  • Conversões implícitas continuam funcionando
  • O editor de código controla o modo de gravação (Unicode vs AnsiString), ambos continuam sendo suportados.

Operações que não dependem do tamanho do caractere:

  • Concatenação de Strings
  • Funções padrão para manipulação de Strings, exemplo: Lenght, Copy, Pos e outras.
  • Operadores, exemplos: <string> <op. de comparação> <string>, CompareStr(), CompareText(), etc.
  • FillChar ( <struct or memory> )
  • Windows API

Operações que envolvem tamanho de caractere em bytes, talvez requeiram algumas mudanças, nada complicado, aqui vai uma dica, verifique código onde você:

  1. Assume que o Sizeof (Char) é 1.
  2. Assume que o tamanho de uma string é igual ao número de bytes na string.
  3. Manipula diretamente String ou PChars.
  4. Grava ou lê string de/para um arquivo.

Os itens 1 e 2 não valem para Unicode, porque para Unicode Sizeof (Char) são 2 bytes e o tamanho de uma string é duas vezes o número de bytes. Além disso, o código que lê e grava arquivos precisa entender o número correto de bytes para efetuar estas operações, pois um caractere não é mais representando por 1 byte.

Como vocês podem ver, a migração é muito tranqüila. O benefício de suportar Unicode é permitir que o desenvolvedor Delphi distribua as suas aplicações em todo o mundo. O Brasil hoje é um dos grandes desenvolvedores de software mundiais. Diversas empresas brasileiras distribuem as suas aplicações na China, Japão, Rússia e outros Países onde Unicode é fundamental.

Em 2007, o governo Russo adquiriu 1 milhão de licenças de Delphi, que serão utilizadas para ensinar alunos do 1º e 2º graus a desenvolver software com Delphi. Portanto, o suporte a Unicode é fundamental naquele País.

Para ajudar a conhecer todos os recursos do Delphi 2010 e auxiliar na migração disponibilizamos o RAD Studio Migration Center, onde você encontrará diversos materiais, como artigos e vídeos, divirtam-se.

Compartilhe e divirta-se:
  • Print
  • Twitter
  • Facebook
  • Yahoo! Bookmarks
  • Digg
  • Sphinn
  • del.icio.us
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • Add to favorites

Posts relacionados

Tags:

 
 
 
 

2 Comments

 
  1. [...] o suporte a Unicode em todo o Delphi, caso você não esteja familiarizado com Unicode leia este post. Ao compilar sua aplicação alguns avisos (warning) serão emitidos pelo compilador, neste post [...]

  2. [...] This post was mentioned on Twitter by Andreano Lanusse, Adriano Santos. Adriano Santos said: RT @andreanolanusse: Blog post: Entendendo Unicode para migrar sua aplicação Delphi http://bit.ly/8BI5sW #delphi [...]

 

Leave a Comment

 




XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 
 
 
Get Adobe Flash playerPlugin by wpburn.com wordpress themes