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 :

Le remplacement de caractères accentués ne fonctionne pas [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut Le remplacement de caractères accentués ne fonctionne pas
    Bonjour,

    J'ai un TMemo dans lequel j'ai un texte avec des caractères accentués. Je souhaite remplacer ces caractères par d'autres.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Avant, Apres : String;
      i : Integer;
    begin
         Avant := 'àéèê';
         Apres := 'aeee';
     
         for i:=1 to Length(Avant) do
         begin
              Memo1.Lines.Strings[0] := StringReplace(Memo1.Lines.Strings[0], Avant[i], Apres[i], [rfReplaceAll]);
         end;
    end;
    Il ne me remplace que le premier caractère accentué trouvé par un caractère bizarre...

    Pouvez-vous m'aider à corriger ce problème ?

    Merci,
    ZiP

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 120
    Par défaut
    Bonsoir,
    Citation Envoyé par [ZiP] Voir le message
    (...) Pouvez-vous m'aider à corriger ce problème ?
    Non, pour la bonne et simple raison qu'en français, l'accent a pleine valeur orthographique et fait donc partie intégrante du mot.
    Un exemple : l'augmentation des retraites et l'augmentation des retraités ce n'est pas la même chose !

    Pourquoi veux-tu supprimer ces accents ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonjour,

    C'est parce que je dois transférer des fichiers à un système informatique qui n'accepte aucun caractères accentué dans ceux-ci.

    Je pense que mon problème vient de l'encodage de ces caractères mais je ne sais pas comment le corriger.

    Merci,
    ZiP

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 160
    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 160
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par [ZiP] Voir le message
    Je pense que mon problème vient de l'encodage de ces caractères mais je ne sais pas comment le corriger.
    Bonjour !

    Les choses sont expliquées dans ce document.

    Voici un exemple qui fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s: string;
      a: ansistring;
    begin
      s := Memo1.Lines.Text;
      a := UTF8ToAnsi(s);
      a := StringReplace(a, UTF8ToAnsi('é'), UTF8ToAnsi('e'), [rfReplaceAll]);
      s := AnsiToUTF8(a);
      Memo1.Lines.Text := s;
    end;

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 120
    Par défaut
    Citation Envoyé par [ZiP] Voir le message
    C'est parce que je dois transférer des fichiers à un système informatique qui n'accepte aucun caractère accentué dans ceux-ci.
    Mais qu'est-ce qu'il va faire avec ces fichiers sans accents ? Le problème de la cohérence orthographique des données va se déplacer sur ce système !

    Refuse, ou à tout le moins, exige des explications (car pour moi c'est juste insensé ce plan).

    Sinon, à terme, il y aura des problèmes : une ancienne collègue dont le nom de famille comportait un accent, qui sautait ou pas selon les organismes, a vécu l'enfer.

    [EDIT] Ah, j'ai oublié ça : une tâche (à exécuter) n'a rien à voir avec une tache (sur la chemise). D'où la nécessité des accents. Explique-leur ça...
    Et tiens, en écrivant ça, je suppose que tu dois faire sauter la cédille aussi ? Ben ça va être joli, le résultat [/EDIT]

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Jie,
    Citation Envoyé par Jipété Voir le message
    [EDIT] Ah, j'ai oublié ça : une tâche (à exécuter) n'a rien à voir avec une tache (sur la chemise). D'où la nécessité des accents. Explique-leur ça...
    Et tiens, en écrivant ça, je suppose que tu dois faire sauter la cédille aussi ? Ben ça va être joli, le résultat [/EDIT]
    J'aime bien également celui-ci :

    Il est interne à l'hôpital psychiatrique et Il est interné à l'hôpital psychiatrique.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonjour,

    Effectivement, votre exemple fonctionne, je l'ai testé ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1.Lines.Text := AnsiToUTF8(StringReplace(UTF8ToAnsi(Memo1.Lines.Text), UTF8ToAnsi('é'), UTF8ToAnsi('e'), [rfReplaceAll]));
    Cependant, lorsque je souhaite utiliser une chaine contenant plusieurs caractères pour le remplacement, ça ne fonctionne plus :

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
       Avant, Apres : String;
       i : Integer;
    begin
         Avant := 'àéèê';
         Apres := 'aeee';
     
         for i:=1 to Length(UTF8ToAnsi(Avant)) do
         begin
              ShowMessage(Avant[i]); // n'affiche rien
              ShowMessage(Apres[i]); // s'affiche correctement
              Memo1.Lines.Text := AnsiToUTF8(StringReplace(UTF8ToAnsi(Memo1.Lines.Text), UTF8ToAnsi(Avant[i]), UTF8ToAnsi(Apres[i]), [rfReplaceAll]));
         end;
    end;
    Merci pour votre aide,
    ZiP

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2009, 16h26
  2. Réponses: 3
    Dernier message: 25/02/2009, 15h59
  3. Remplacer les caractères accentués dans une chaine
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 5
    Dernier message: 07/05/2008, 10h41
  4. Remplacer certains caractères (accentués) par d'autre
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 24/07/2007, 13h05
  5. Probleme de remplacement de caractère accentués
    Par guian dans le forum Langage
    Réponses: 1
    Dernier message: 01/06/2007, 15h06

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