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

Lazarus Pascal Discussion :

TStringGrid.SaveToFile UTF-8 / ANSI [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut TStringGrid.SaveToFile UTF-8 / ANSI
    Bonjour

    Je suis ce forum depuis un bon moment en spectateur.
    Beaucoup de mes questions y ont été résolues

    Aujourd’hui je me permet de vous demander directement de l 'aide

    J'ai un programme (écrit en lazarus) qui me sert à calculer mes notes de frais professionnels depuis 1 an. Tout ce passait bien jusqu'a ce que dernièrement j 'y ajoute quelques fonctions

    les fichiers lus avec ma nouvelle version recompilée ont des petits (mais très embêtants) problèmes d'accents

    Après des recherches sur le web je finis par me rendre compte que les fichiers produits (xml issus d'un simple TStringgrid.saveToFile) sont encodes en ANSI et pas en UTF-8

    Je reprends toute ma base (20 fichiers au +) j ouvre avec le bloc note -> enregistré sous je change UTF-8 en ANSi. Miracle tout est rentré dans l'ordre.

    Sauf que
    -Je lis partout que les fichiers produits par la LcL sont encodés en UTF-8
    pas chez moi alors que avant oui
    -l’exécutable produit donne le même résultat sur du 7even ou XP (testé sur au moins 6 ordis différents)
    -si je recompile mon ancienne version. Elle me fournit des fichiers ANSI !!!
    Je n'arrive pas à comprendre pourquoi d une machine à l'autre
    (en seven 64 et rigoureusement la même version de lazarus 1.2rc2 et j ai essayé aussi avec les versions "normales 1.0x" le résultat est le même)
    le résultat produit est différent.


    je recherche partout en vain
    je me rends compte que cela arrive à d'autres aussi mais il n y a jamais de réponses
    En général on renvoie sur des discussions qui donnent la théorie du UTF-8 et les autres. Ok mais pourquoi une compilation d 'une machine a l'autre varie le résultat
    J ai entièrement désinstallé lazarus + supprimé C:\Users\utilisateur\AppData\Local\lazarus

    je ne sais plus quoi en penser..
    Si quelqu'un A une idée une piste ou même LA solution je suis preneur

    Cordialement
    Thierry
    Images attachées Images attachées   

  2. #2
    Membre émérite
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Par défaut
    Bonjour,

    Non, la LCL est neutre et ne change pas l'encodage. Ce sont les interfaces graphiques qui sont, par défaut, prévues pour afficher de l'UTF-8.

    D'où viennent les textes qui sont enregistrés dans le fichier ? De constantes dans le source, d'une saisie manuelle, d'autres fichiers textes ou autre, d'une base de données ?

    Dans le dernier cas, le paramétrage local de certains SGBD peut tout à fait donner un encodage différent selon les machines clientes. Le plus efficace est alors de corriger à ce niveau, pour obtenir de l'UTF-8 partout.

    Si ce n'est pas possible, la seule solution est de convertir avant d'enregistrer. Il existe tout ce qu'il faut dans l'unité LConvEncoding : une fonction qui permet de savoir dans quel jeu de caractères est une chaine donnée, et des fonctions qui permettent de convertir d'un jeu en un autre.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    bonjour

    les données proviennent
    -TCalcEdit -> Edit1.text
    -TCalendar -> FormatDateTime('YYYYMMDD', StrToDate(Calendar1.Date));
    -TComboBox -> comboBox1.text

    le combobox1 est rempli avec ceci : Array[1..Motif_max] of string declaré en constantes dans le source

    Cordialement

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Bonsoir,

    Citation Envoyé par dumezt Voir le message
    les données proviennent
    -TCalcEdit -> Edit1.text
    (...)
    En supposant que tu as voulu dire (précisément parce que là c'est pas clair, la preuve cette question) :
    Citation Envoyé par dumezt Voir le message
    les données proviennent comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TCalcEdit := Edit1.text;
    moi je tenterai autant que possible cette construction : TCalcEdit := AnsiToUTF8(Edit1.text); Regarde l'aide sur ce mot.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    bonjour

    Oui Jipété c'est ce que j ai voulu dire

    Du nouveau dans mes recherches

    J ai une machine neuve sous la main
    J installe un lazarus 1.2RC2 fraichement téléchargé
    Je crée un nouveau projet avec juste un Tstringgrid

    Mes anciens fichiers (UTF-8 vu dans la boite de dialogue enregistrer sous du bloc note) s ouvrent avec des problèmes d'accents
    Mes 'nouveaux' fichiers (ANSI) s'ouvrent sans problème (avec les accents)

    Peut il y avoir une incompatibilité avec des DLL provenant d'une installation d'un autre logiciel
    je lis sur http://wiki.freepascal.org/LCL_Unico...iquement_UTF-8

    Habituellement, l'encodage est défini bibliothèque par bibliothèque (une bibliothèque dynamique (dll) ou un package Lazarus). Chaque bibliothèque attendra uniformément un type d'encodage, qui sera habituellement soit Unicode (UTF-8 pour Lazarus), soit ANSI (qui signifie l'encodage du système, et peut être UTF-8 ou non).
    D'ou l'idée d une DLL?

    tintinux me disait
    Non, la LCL est neutre et ne change pas l'encodage. Ce sont les interfaces graphiques qui sont, par défaut, prévues pour afficher de l'UTF-8.
    Entendez vous par là GTK2 ...

    Je ne comprend pas ce qu'il y a eu sur mon ancienne installation. Visiblement le comportement actuel est normal.

    Je dis résolu (sans avoir bien saisi pourquoi c'était autrement avant)

    Cordialement
    Thierry

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] [0.9.28.2/Win XP] TStringGrid et UTF-8 <-> ANSI
    Par danucc dans le forum Lazarus
    Réponses: 4
    Dernier message: 02/09/2010, 12h23
  2. [Système/Fichiers/API] Codage USC-2 UTF-8 ANSI
    Par Baxter67 dans le forum C++Builder
    Réponses: 11
    Dernier message: 12/06/2010, 13h34
  3. [PHP 5.2] Convertir un fichier de UTF-8 à ANSI
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2009, 11h04
  4. Eclipse 3.2.0 utf-8 -> ANSI
    Par Mind-x dans le forum Eclipse
    Réponses: 2
    Dernier message: 08/12/2008, 22h49
  5. [UTF-8 ANSI] Conversion de fichier
    Par M1000 dans le forum Langage
    Réponses: 1
    Dernier message: 06/03/2007, 16h33

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