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 :

Encore le problème des caractères accentués [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut Encore le problème des caractères accentués
    Windows 10 - lazarus-2.0.12-fpc-3.2.0-win64

    Bonsoir,

    Je me mets à Lazarus et je l'explore. Jusqu'à présent je n'avais aucun problème mais en voulant faire une permutation de caractères à partir d'un TEdit.text je me suis rendu compte que les caractères accentués n'apparaissaient pas. J'ai donc fait une simple itération du TEdit.text comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer ; // indice de la variable edit1.Text
      texte : String;
     
    begin
     
      ListBox1.Clear;
      texte := Edit1.Text;
     
      for i:=1 to Length(texte) do
        begin
          ListBox1.Items.Add(texte[i]);
        end;
     
     end;
    Les caractères éàè etc... sont vides. J'ai cherché sur les forums, appliqué par exemple [I]GuessEncoding(texte) pour savoir qu'elle était le codage du ' é ' cp1252 en l'occurence et j'ai fait toute les variantes entre UTF8toCp1252/ et inverse, j'ai lu ce wiki de freepascal intéressant https://wiki.freepascal.org/LCL_Unic...NSI_et_Unicode où j'ai essayé UTF8toAnsi et inversement, explorer Lazutils etc..
    Je reconnais, humblement que mon niveau technique ne me permets pas de bien comprendre ce que je dois faire.
    Donc question:
    Y-a-t-il un moyen de boucler sur un texte (TEdit.text) avec caractère accentué et après traitement l'introduire dans une listBox ou un champ mémo d'une façon pas trop compliquée ?
    Je vous remercie de votre patience, par avance

    Caylus

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 174
    Billets dans le blog
    9
    Par défaut
    Bonjour et bienvenue dans le forum !

    Une solution est d'utiliser les fonctions UTF8Length et UTF8Copy de l'unité LazUTF8. Pour m'assurer que je ne disais pas de bêtise, j'ai fait un petit exemple. Apparemment ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      for i := 1 to UTF8Length(Edit1.Text) do
        Memo1.Append(UTF8Copy(Edit1.Text, i, 1));
    end;
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut
    Merci pour ton message de bienvenu et ta rapidité ! Ton code fonctionne très bien. Je n'avais pas compris le UTF8Copy. Cela me fait plaisir je vais pouvoir continuer mon petit projet. Vous aurez sans doute souvent mes questions foutraques de béotien !

    Cordialement,
    Caylus

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Octobre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1
    Par défaut Je ne vois pas de différence...
    J'ai testé votre démo, et après avoir ajouté ce qui suit, je ne vois aucune différence: Avec ou sans la fonction UTF8Copy, j'obtiens toujours les accents de façon correcte...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      Memo1.Append(Edit1.Text + CHR(13));
      Memo1.Append(UTF8Copy(Edit1.Text + CHR(13), 1, Length(Edit1.Text)));
      for i := 1 to UTF8Length(Edit1.Text) do
        Memo1.Append(UTF8Copy(Edit1.Text, i, 1));
    end;
    qui donne Hélène dans les 3 cas.

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

Discussions similaires

  1. encodage problème des caractères accentués
    Par thomyvp dans le forum Langage
    Réponses: 8
    Dernier message: 15/03/2015, 12h31
  2. Encore un problème de caractères accentués
    Par enicnath dans le forum Général Python
    Réponses: 6
    Dernier message: 15/10/2013, 17h07
  3. problème des caractères accentués
    Par emowpya dans le forum Android
    Réponses: 6
    Dernier message: 19/06/2012, 15h01
  4. Problème d'affichage des caractères accentués
    Par Neuromancien2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 07/07/2007, 13h43
  5. Problème d'affichage des caractères accentués
    Par ostaquet dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 06h58

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