« Support de Unicode » : différence entre les versions

De Wiki1000
(Page blanchie)
Ligne 1 : Ligne 1 :
{{new|tahoe}}
==Unicode dans Delphi==


A partir de la version 2009, Delphi supporte l'unicode.
La représentation interne des chaines change.
{| class="wikitable" width="80%" align="center"
|-
! scope=col |
! scope=col | < D2009
! scope=col | >= D2009
|-
| width="33%" |
'''String'''
| width="34%" |
AnsiString
| width="33%" |
UnicodeString
|-
| width="33%" |
'''Char'''
| width="34%" |
AnsiChar (1 octet)
| width="33%" |
WideChar (2 octets)
|-
|}
'''Tout code qui présume qu'une variable de type char est stockée sur un octet est donc à revoir.'''
{{tip|Le type UnicodeString n'est pas équivalent au type WideString. UnicodeString est géré par compteur de référence et utilise le gestionnaire de mémoire delphi, pas le type wideString qui est moins efficace}}
La plupart des valeurs entière demeurent les mêmes
'''Ord(AnsiChar('a'))=Ord(Char('a'))''',
mais il existe des exceptions notamment
'''Ord(AnsiChar('€'))=128''' et '''Ord(Char('€'))=8364'''
==Migration vers Delphi 2010==
===Versions du compilateur===
{$IFDEF VER180} - Delphi 2006
{$IFDEF VER180} - Delphi 2007
{$IFDEF VER185} - Delphi 2007
{$IFDEF VER200} - Delphi 2009
{$IFDEF VER210} - Delphi 2010
===Modifications du code===
Une unité a été ajoutée pour la lecture et écriture de flux contenant des chaînes: ustrhlp.
Dans cette unité, la lecture et l'écriture chaine dans un flux s'effectue par défaut en '''ansi''' (comme avant donc). Il faut préciser si on souhaite un autre encodage.
===La configuration du projet===
* Indy : Nouvelle version de Indy (indy10-Tiburon)
* Zlib : retirer les références à zlib (on prend celui de delphi)
* png : libGraph/png* (??)
* Apache
* [http://docwiki.embarcadero.com/RADStudio/fr/STRINGCHECKS_%28Delphi%29 Désactiver la vérification du format de chaîne]
===Compilation paquet===
* Remplacer VCLjpg par VCLIMG
===Reste à faire===
* CharInSet
* Warnings
* ansistrings restants

Version du 24 août 2010 à 11:00