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 :

Remplacer un texte dans memo


Sujet :

C++Builder

  1. #1
    Membre actif
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 66
    Par défaut Remplacer un texte dans memo
    Bonjour,

    ce que je voudrais c'est supprimer le texte entre deux limiteurs, et remplacer par un autre texte
    par exemple
    si j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int a,b,c;
    char char1,char2 ;
    ShowMessage("Hello wordl");
     
    //je dois y avoir 
    int d,e,f,g;
    char char1,char2 ;
    ShowMessage("Hello wordl");
    J'ai fait comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int m = Pos("int", memo->Lines->Text);
    int n = Pos(';', memo->Lines->Text);
    int br = memo->Lines->Count ;
    if((m>0)&&(n>0)&&(m<n))
     
    memo->Lines->Text = LeftStr(memo, m-1)+' d,e,f,g' + RightStr(memo, br - n)
    mais sa m'a supprimer tout le texte !

    Quelqu'un a une idée sur comment faire...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Memo1->Clear();
    Memo1->Lines->Add("1231");
    Memo1->Lines->Add("1232");
    Memo1->Lines->Add("1233");
    Memo1->Lines->Add("avant1intapres1");
    Memo1->Lines->Add("4561");
    Memo1->Lines->Add("4562");
    Memo1->Lines->Add("avant2;apres2");
    Memo1->Lines->Add("789");
    Memo1->Lines->Add("101112");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    AnsiString Temp1 ;
    int i = 0  ;
    int m = -1 ;
    int n = -1 ;
    TStringList *List = new TStringList();
     
    for ( i =0 ; i < Memo1->Lines->Count; i++ )
    if ( AnsiPos("int", Memo1->Lines->Strings[i] ) && m == -1)
    m = i ;
     
    if ( m > 0  )
    {
    for ( i =m ; i < Memo1->Lines->Count; i++ )
    if ( AnsiPos(";", Memo1->Lines->Strings[i] ) && n == -1)
    n = i ;
     
    // lignes avant 1ere condtion
    for ( i = 0 ; i < m ; i++ )
    List->Add( Memo1->Lines->Strings[i]);
    // partie gauche de la ligne où on trouve la 1ere condition
    List->Add( Memo1->Lines->Strings[m].SubString(  0 , Memo1->Lines->Strings[m].Pos("int")-1 )  );
    // partie droite de la ligne où on trouve la seconde condition
    List->Add( Memo1->Lines->Strings[n].SubString(  Memo1->Lines->Strings[n].Pos(";")+1 , Memo1->Lines->Strings[n].Length() )  );
    // lignes apres la seconde condition
    for ( i = n+1 ; i < Memo1->Lines->Count ;  i++ )
    List->Add( Memo1->Lines->Strings[i]);
     
     
    Memo1->Clear();
     
    for ( int j = 0 ; j < List->Count ; j++ )
    Memo1->Lines->Add(List->Strings[j]);
    }
    }

  3. #3
    Membre actif
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 66
    Par défaut
    Je vous remercie pour votre réponse !

    Sinon on peut juste supprimer ce qui est entre les limiteurs mais je ne vois pas comment le remplacer par un autre text

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 071
    Par défaut
    StringReplace
    StuffString avec #include <StrUtils.hpp> !

    Si on peut supprimer, on peut aussi concaténer
    SubString(1, Pos - 1) + MaChaineEnPlus + SubString(Pos + 1, MaxInt);

    En C++Builder, String[1] c'est le 1er caractère, [0] est corrigé automatiquement en [1] mais il ne faut pas l'oublier,
    Idem SubString comme à 1 et corrige le 0


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String t = memo->Lines->Text; // Text est une opération lente, il préférable de la stocker
    String st = "int";
    int m = Pos(st, t);
    int n = Pos(';', t);
    int br = t.Length() ; // Count c'est en nombre de ligne par en nombre de caractère
    if((m>0)&&(n>0)&&(m<n))
      //memo->Lines->Text = LeftStr(t, m -1 + st.Length())+" d,e,f,g" + RightStr(t, br - n + 1);
      memo->Lines->Text = StuffString(t, m + st.Length(), n - m - st.Length(), " d,e,f,g");


    EDIT :
    Est-ce que le membre qui colle des pouvait éclairer nos lanternes sur nos erreurs ? Cela serait sympa !
    Idem, mettre un sur une question d'un membre ne me semble pas pertinent !
    Le système de vote permet d'identifier la réponse utile ou alors qualifie une contribution !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. Remplacement de texte dans un fichier
    Par horec dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 29/05/2008, 10h25
  2. Programme de remplacement de texte dans des fichiers
    Par Invité4 dans le forum Linux
    Réponses: 13
    Dernier message: 12/11/2006, 16h06
  3. Remplacer un texte dans une cellule Excel à partir d'un point donné
    Par tonyC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/04/2006, 19h05
  4. remplacer du texte dans un tableau généré
    Par jcaruana dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/02/2006, 16h36
  5. [langage] Remplacer du texte dans un fichier
    Par Michaël dans le forum Langage
    Réponses: 9
    Dernier message: 11/03/2005, 15h19

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