IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

migration unicode D2007


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    856
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 856
    Points : 266
    Points
    266
    Par défaut migration unicode D2007
    bonjour,

    je travaille actuellement sur une appli en Delphi 2007.

    J'ai essayé de la compiler chez un collègue qui possède Delphi XE afin de voir ce que cela donnait au niveau migration unicode.

    Et finalement il n'y a que 4 erreurs qui se répetent tout au long du code.
    Voir fichier joint

    Je voulais savoir à la vue de ces erreurs , si je peux déja les anticiper en Delphi 2007.
    Si ce n'est pas possible, quelles seront les actions correctives à faire en XE pour les erreur W1057 et W1058.

    cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 755
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 755
    Points : 13 349
    Points
    13 349
    Par défaut
    Ce ne sont déjà que des avertissements et non des erreurs

    1. Je dirais que tu forces l'utilisation d'une version A d'un fonction. Donc appeler LaFonction (ou éventuellement W) plutôt que LaFonctionA devrait suffire.
    2. Les formats sont maintenant regroupés dans un record qui permet une localisation plus aisée. Dans D2007, tu peux déjà déclarer une variable de type TFormatSettings et l'utiliser avec les routines de conversion. Ce que je te conseille de toute façon de faire s'il y a lecture/écriture dans des fichiers.
    3. Tu as un test du style c in ['a','b'] où "c" ne peut être qu'ANSI. Avec CharInSet, c peut être indifféremment ANSI ou Unicode. Je ne sais pas si cette fonction existait déjà sous D2007.
    4. L'inverse du point 1.


    A part le point 3, ces messages ne sont pas propres à l'Unicode.

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    ... Avec CharInSet, c peut être indifféremment ANSI ou Unicode. Je ne sais pas si cette fonction existait déjà sous D2007.
    Pour info, cette fonction est apparue avec D2009, première version gérant l'Unicode.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    Evite le type AnsiString si le peux !
    Evite le PAnsiChar avec les API Windows qui existe en variant Ansi et Wide
    Si tu as la volonté de passer de Unicode vers Ansi, il te suffit de faire un transtypage explicite genre

    MaChaineAnsi := MonEdit.Text; devient MaChaineAnsi := AnsiString(MonEdit.Text);.
    MaChaineCourte := MonEdit.Text; devient MaChaineCourte := ShortString(MonEdit.Text);.

    Cela va retirer les Warnings car tu indiques au compilateur la volonté de le faire !
    Attention, cette pratique est réservée uniquement si tu as besoin de convertir, le type String doit être le type chaine majoritairement utilisé,
    AnsiString pour compatibilité ou pour des API tiers utilisant du PAnsiChar et
    ShortString si tu l'utilises dans des fichiers type "file of record"


    Pour DecimalSeparator, facile suffit de changer de variable globale, est-ce que FormatSettings existait déjà en 2007, il suffit d'écrire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$IFDEF VER220}FormatSettings.{$ENDIF}DecimalSeparator := ...
    VER220 c'est XE
    en utilisant les variables Indy de IdCompilerDefines.inc, c'est plus simple pour gérer le "version >= vvv"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$IFDEF VCL_XE_OR_ABOVE}FormatSettings.{$ENDIF}DecimalSeparator := ...

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 755
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 755
    Points : 13 349
    Points
    13 349
    Par défaut
    Une petite remarque encore sur string/ansistring qui pourrait aussi être une cause du message de conversion : avoir une variable chaîne de taille fixe déclarée sous la forme string[N] revient à déclarer une chaîne de N ansichar, y compris sur XE3

    Sous D2009 et suivant, string[3] n'est pas égal à array[1..3] of char contrairement aux versions antérieures (sans tenir compte du byte de longueur bien sûr).

Discussions similaires

  1. migration unicode delphi XE2
    Par looping dans le forum Bases de données
    Réponses: 9
    Dernier message: 26/02/2014, 09h15
  2. Migration SQL 2000 vers 2005 et problème d'Unicode
    Par Micht dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/03/2007, 09h34
  3. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  4. [Migratation] Application portable, indépendant du SGDB
    Par benouille dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 28/08/2002, 13h51
  5. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 22h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo