Support de Unicode

De Wiki1000
(Différences entre les versions)
(La configuration du projet)
(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 à 12:00

Outils personnels