{"id":613,"date":"2010-01-20T21:22:33","date_gmt":"2010-01-20T13:22:33","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=613"},"modified":"2011-03-08T12:19:10","modified_gmt":"2011-03-08T04:19:10","slug":"entendendo-unicode-para-migrar-sua-aplicacao-delphi","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/","title":{"rendered":"Entendendo Unicode para migrar sua aplica\u00e7\u00e3o Delphi"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-618\" style=\"border: 0pt none; margin: 4px;\" title=\"Unicode\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Ascender-Unicode-graphic.gif\" alt=\"\" width=\"300\" height=\"168\" \/>Um grande desafio para nossa equipe de R&amp;D foi incorporar o suporte a Unicode em toda a VCL, conseq\u00fcentemente no IDE, uma vez que Delphi \u00e9 feito em Delphi.<\/p>\n<p>Durante todo o desenvolvimento do Delphi 2009, tivemos reuni\u00f5es com v\u00e1rias empresas desenvolvedoras de componentes e <a href=\"http:\/\/blogs.embarcadero.com\/abauer\/\" target=\"_blank\">Allen Bauer<\/a>, Delphi Chief Scientist, atrav\u00e9s do seu blog comentou sobre o suporte a Unicode. Estas iniciativas foram fundamentais para permitir que componentes de terceiros estejam dispon\u00edveis rapidamente para o Delphi 2009 e informar aos desenvolvedores como trabalhar com Unicode.<\/p>\n<p style=\"text-align: center;\">\n<p style=\"text-align: center;\"><em>Unicode \u00e9 um padr\u00e3o que permite aos computadores representar e manipular, de forma consistente, texto de qualquer sistema de escrita existente.<\/em><\/p>\n<p style=\"text-align: center;\"><strong><em>The Unicode Standard: Version 5.0. 5. ed. Addison-Wesley Professional, 2006. 1472 p<\/em><\/strong><\/p>\n<p>Diversos conjuntos de caracteres como chineses, japoneses, russos e outros de origem asi\u00e1ticas s\u00e3o representados atrav\u00e9s de Unicode, utilizando, na maioria dos casos, sistemas de mapeamento e codifica\u00e7\u00e3o UTF (Formato de Transforma\u00e7\u00e3o Unicode) e UCS (Conjunto Universal de Caracteres). Para maiores detalhes sobre Unicode, recomendo o seguinte link: http:\/\/pt.wikipedia.org\/wiki\/Unicode.<\/p>\n<p>O resultado foi um Delphi 100% Unicode, sem exce\u00e7\u00e3o. Voc\u00ea deve estar se perguntando, a migra\u00e7\u00e3o \u00e9 tranq\u00fcila? Podemos dizer que sim, muita coisa foi tratada pela VCL e pelo compilador.<\/p>\n<p>Uma das grandes mudan\u00e7as foi nos tipos String, que anteriormente era baseado em padr\u00e3o ANSI. Agora est\u00e3o baseadas em padr\u00e3o UNICODE. Os tipos AnsiString e WideString continuam funcionando da mesma forma, exceto para tamanho de dados.<\/p>\n<p>Resumo das mudan\u00e7as para Unicode:<\/p>\n<ul>\n<li>String mapeia UnicodeString e n\u00e3o mais AnsiString<\/li>\n<li>Char agora mapeia WideChar (2 bytes e n\u00e3o 1 byte) e \u00e9 um caractere UTF-16<\/li>\n<li>PChar mapeia PWideChar<\/li>\n<li>AnsiString mapeia o antigo tipo String<\/li>\n<\/ul>\n<p>N\u00e3o ocorreram mudan\u00e7as:<\/p>\n<ul>\n<li>AnsiString<\/li>\n<li>WideString<\/li>\n<li>AnsiChar, PAnsiChar<\/li>\n<li>Short String cont\u00e9m elementos AnsiChar<\/li>\n<li>Convers\u00f5es impl\u00edcitas continuam funcionando<\/li>\n<li>O editor de c\u00f3digo controla o modo de grava\u00e7\u00e3o (Unicode vs AnsiString), ambos continuam sendo suportados.<\/li>\n<\/ul>\n<p>Opera\u00e7\u00f5es que n\u00e3o dependem do tamanho do caractere:<\/p>\n<ul>\n<li>Concatena\u00e7\u00e3o de Strings<\/li>\n<li>Fun\u00e7\u00f5es padr\u00e3o para manipula\u00e7\u00e3o de Strings, exemplo: Lenght, Copy, Pos e outras.<\/li>\n<li>Operadores, exemplos: &lt;string&gt; &lt;op. de compara\u00e7\u00e3o&gt; &lt;string&gt;, CompareStr(), CompareText(), etc.<\/li>\n<li>FillChar ( &lt;struct or memory&gt; )<\/li>\n<li>Windows API<\/li>\n<\/ul>\n<p>Opera\u00e7\u00f5es que envolvem tamanho de caractere em bytes, talvez requeiram algumas mudan\u00e7as, nada complicado, aqui vai uma dica, verifique c\u00f3digo onde voc\u00ea:<\/p>\n<ol>\n<li>Assume que o Sizeof (Char) \u00e9 1.<\/li>\n<li>Assume que o tamanho de uma string \u00e9 igual ao n\u00famero de bytes na string.<\/li>\n<li>Manipula diretamente String ou PChars.<\/li>\n<li>Grava ou l\u00ea string de\/para um arquivo.<\/li>\n<\/ol>\n<p>Os itens 1 e 2 n\u00e3o valem para Unicode, porque para Unicode Sizeof (Char) s\u00e3o 2 bytes e o tamanho de uma string \u00e9 duas vezes o n\u00famero de bytes. Al\u00e9m disso, o c\u00f3digo que l\u00ea e grava arquivos precisa entender o n\u00famero correto de bytes para efetuar estas opera\u00e7\u00f5es, pois um caractere n\u00e3o \u00e9 mais representando por 1 byte.<\/p>\n<p>Como voc\u00eas podem ver, a migra\u00e7\u00e3o \u00e9 muito tranq\u00fcila. O benef\u00edcio de suportar Unicode \u00e9 permitir que o desenvolvedor Delphi distribua as suas aplica\u00e7\u00f5es em todo o mundo. O Brasil hoje \u00e9 um dos grandes desenvolvedores de software mundiais. Diversas empresas brasileiras distribuem as suas aplica\u00e7\u00f5es na China, Jap\u00e3o, R\u00fassia e outros Pa\u00edses onde Unicode \u00e9 fundamental.<\/p>\n<p>Em 2007, o governo Russo adquiriu 1 milh\u00e3o de licen\u00e7as de Delphi, que ser\u00e3o utilizadas para ensinar alunos do 1\u00ba e 2\u00ba graus a desenvolver software com Delphi. Portanto, o suporte a Unicode \u00e9 fundamental naquele Pa\u00eds.<\/p>\n<p>Para ajudar a conhecer todos os recursos do Delphi 2010 e auxiliar na migra\u00e7\u00e3o disponibilizamos o <a href=\"http:\/\/www.embarcadero.com\/rad-studio-2010-migration-center\" target=\"_blank\"><strong>RAD Studio Migration Center<\/strong><\/a>, onde voc\u00ea encontrar\u00e1 diversos materiais, como artigos e v\u00eddeos, divirtam-se.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um grande desafio para nossa equipe de R&amp;D foi incorporar o suporte a Unicode em toda a VCL, conseq\u00fcentemente no IDE, uma vez que Delphi \u00e9 feito em Delphi. Durante todo o desenvolvimento do Delphi 2009, tivemos reuni\u00f5es com v\u00e1rias empresas desenvolvedoras de componentes e Allen Bauer, Delphi Chief Scientist, atrav\u00e9s do seu blog comentou [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"","footnotes":""},"categories":[102],"tags":[181,42],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Entendendo Unicode para migrar sua aplica\u00e7\u00e3o para Delphi 2010<\/title>\n<meta name=\"description\" content=\"Um grande desafio para nossa equipe de R&amp;D foi incorporar o suporte a Unicode em toda a VCL, conseq\u00fcentemente no IDE, uma vez que Delphi \u00e9 feito em\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Entendendo Unicode para migrar sua aplica\u00e7\u00e3o para Delphi 2010\" \/>\n<meta property=\"og:description\" content=\"Um grande desafio para nossa equipe de R&amp;D foi incorporar o suporte a Unicode em toda a VCL, conseq\u00fcentemente no IDE, uma vez que Delphi \u00e9 feito em\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2010-01-20T13:22:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-03-08T04:19:10+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Ascender-Unicode-graphic.gif\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"3 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Ascender-Unicode-graphic.gif\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/01\/Ascender-Unicode-graphic.gif\",\"width\":500,\"height\":280},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/\",\"name\":\"Entendendo Unicode para migrar sua aplica\\u00e7\\u00e3o para Delphi 2010\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#primaryimage\"},\"datePublished\":\"2010-01-20T13:22:33+00:00\",\"dateModified\":\"2011-03-08T04:19:10+00:00\",\"description\":\"Um grande desafio para nossa equipe de R&amp;D foi incorporar o suporte a Unicode em toda a VCL, conseq\\u00fcentemente no IDE, uma vez que Delphi \\u00e9 feito em\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Entendendo Unicode para migrar sua aplica\\u00e7\\u00e3o Delphi\",\"datePublished\":\"2010-01-20T13:22:33+00:00\",\"dateModified\":\"2011-03-08T04:19:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#webpage\"},\"commentCount\":4,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#primaryimage\"},\"keywords\":[\"Delphi\",\"Unicode\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/entendendo-unicode-para-migrar-sua-aplicacao-delphi\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/613"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=613"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/613\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=613"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}