Entendendo Unicode para migrar sua aplicação Delphi
in Delphi (Win32) by Andreano Lanusse — 20 de janeiro de 2010 at 21:22 | 2 comments
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ê:
- Assume que o Sizeof (Char) é 1.
- Assume que o tamanho de uma string é igual ao número de bytes na string.
- Manipula diretamente String ou PChars.
- 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.
Posts relacionados
- Delphi Unicode – entendo os avisos (warning) do compilar sua aplicação
- Utilizando expressões regulares para validar endereço IP no Delphi XE
- Ao comprar Delphi XE (aka Delphi 2011) você recebe as versões do Delphi 7, 2007, 2009 e 2010
- Teste nosso servidor DataSnap XE instalado no Amazon Cloud
- Disponibilizada nova versão do Delphi XE, C++Builder XE, Delphi Prism XE e RadPHP XE
- DataSnap XE e Windows Azure – RAD Studio XE Preview #3
Tags: Delphi (Win32) Embarcadero Unicode
Tags
Posts Recentes
Utilizando expressões regulares para validar endereço IP no Delphi XE
Delphi (Win32) | setembro 9, 2010 | 1 comment
Ao comprar Delphi XE (aka Delphi 2011) você recebe as versões do Delphi 7, 2007, 2009 e 2010
Delphi (Win32), Delphi Prism (.NET) | setembro 8, 2010 | 2 comments
Teste nosso servidor DataSnap XE instalado no Amazon Cloud
Delphi (Win32) | setembro 3, 2010 | 1 comment
Vídeos
Usando Rapid SQL XE com InterBase e Firebird
Database | junho 29, 2010 | 3 comments
Delphi, ER/Studio e DB Optimizer em ação
Database, Delphi (Win32), Delphi Prism (.NET) | maio 25, 2010 | 1 comment
Mais previews sobre a próxima versão do Delphi for PHP
RadPHP (Delphi for PHP) | maio 7, 2010 | 14 comments
Apresentações do Delphi Conference Online disponibilizadas para download
Delphi (Win32) | fevereiro 27, 2010 | 5 comments









Developer Network
2 Comments
[...] 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 [...]
[...] 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 [...]