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

C++Builder Discussion :

Changer le return par des "\\n" [FAQ]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut Changer le return par des "\\n"
    Bonjour,
    J'ai un Tmemo dans lequel l'utilisateur rentre un text avec des retour à la ligne.

    Je dois à un moment tout copier dans un AnsiString sans modifier le contenu du TMemo. Seulement, il me faut avoir les caractères \ et n à la place du retour à la ligne.

    Comment faire pour détecter ce retour à la ligne?

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonsoir,

    est-ce que cette source ne répond pas à ton besoin : http://c.developpez.com/sources/bcb/...ilinepasteedit

    En l'occurence, l'utilisation de la fonction StringReplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1->Text = StringReplace(Memo1->Text, "\r\n", "\\n", TReplaceFlags() << rfReplaceAll);
    Eric

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Je vais peut être dire n'importe quoi mais le propriété Text du TMemo ne te suffit pas ?
    Neilos

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut Re: Changer le return par des "\\n"
    Citation Envoyé par gandf
    Seulement, il me faut avoir les caractères \ et n à la place du retour à la ligne.
    Ma réponse se base sur ces propos. Ce que j'ai compris de la question, c'est qye gandf veut remplacer le retour à la ligne par \n.

    Soit la conversion de
    mots
    sur
    plusieurs
    lignes
    en
    mots\nsur\nplusieurs\nlignes
    Eric

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Ricky81 avait bien compris la question.
    Seulement, il ne fallait pas modifier le texte Memo parce qu'il est encore utilisé par l'utilisateur.

    Voici le code que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    AnsiString MemoTemp = "";
    MemoTemp = Memo1->Text;
    int nPos;
    while ((nPos = MemoTemp.Pos( "\r\n")) != 0)
          {
          MemoTemp = MemoTemp.Delete(nPos, 2);
          MemoTemp = MemoTemp.Insert("\\n", nPos);
          }
    Et il faut rechercher "\r\n" et non "\n\r" ou "\n" comme je le faisais

    Une dernière petite question :
    Les 2 caractères \ et ' l'un à la suite de l'autre donne :
    "\\'" ou "\\\'"?

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Citation Envoyé par gandf
    Ricky81 avait bien compris la question.
    Seulement, il ne fallait pas modifier le texte Memo parce qu'il est encore utilisé par l'utilisateur.
    Mais la fonction StringReplace ne modifie pas le texte du Memo.
    Le code que je t'ai donné modifie-t-il ton Memo ?

    Eric

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Vous avez effectivement raison et votre code est plus simple que celui que j'avais.

    Une question que je me pose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    J'ai une autre ligne après :
    MemoTemp = StringReplace(MemoTemp, '\'', '\\' + '\'', TReplaceFlags() << rfReplaceAll);
    Et cela me remplace tous les caractères ' par 131.
    J'ai toujours beaucoup de mal avec les chaines de caractères

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Aucun problème en utilisant des chaînes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemoTemp = StringReplace(MemoTemp, "\'", "\\\'", TReplaceFlags() << rfReplaceAll);
    Pour ce qui est de l'explication, lancez ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ShowMessage('\\' + '\'');
    ShowMessage((int)'\\');
    ShowMessage((int)'\'');
    Eric

  9. #9
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Merci, cela focntionne parfaitement et je comprend maintenant pourquoi mon code ne focntionnait jamais.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/05/2005, 16h58

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