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 :

Avec TMemoryStream : remplacer.


Sujet :

C++Builder

Vue hybride

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut Avec TMemoryStream : remplacer.
    Bonjour et bonne année,

    Pas tres calé en TMemoryStream ! (Cbuilder) et apres une apres-midi de recherche, je rend la main.
    1) Pour changer tous les caractère ";" par "," dans 1 gros fichier, je fais :

    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
     
    int T;  
    char *C;
    char Ligne[545];
    TMemoryStream* MS = new TMemoryStream();
    MS->LoadFromFile("ESSAI.TXT");
     
    T = MS->Size; 
    C = new char[T];
    MS->Read(C+1,T);
     
    for (int I=0; I<T; I++)  {
       if  (C[I] == ';'    C[I]=',';            // Je change les ";" par des "," dans tout le texte.
    }
     
     MS->Position = 0;
     MS->Write(C,T);
     
    MS->SaveToFile("ESSAI2.CSV");
     
    delete MS;
     delete[] C;
    }
    Evidemment ca fonctionne impécable !...

    2) ce qui me plairait serait de pouvoir changer toutes les occurences ";;" par ",-,"
    (Autrement dit tout les endroits ou il y a un double point-virgule insérer un signe moins)
    Quelqu'un aurait-il la connaissance pour me mettre sur le "droit" chemin ?
    Merci par avance.

    jcsoft

  2. #2
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Pour ma part, je passerais par des TStringList, par exemple ceci :

    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
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int i;
    TStringList *SL1, *SL2;
     
    SL1=new TStringList;
    SL2=new TStringList;
    SL1->LoadFromFile("essai.txt");
    for(i=0;i<SL1->Count;i++) SL2->Add(TraiteLigne(SL1->Strings[i]));
    SL2->SaveToFile("modif.txt"); 
    delete SL1;
    delete SL2;
    }
    //------------------------------------------------
    AnsiString __fastcall TForm1::TraiteLigne(AnsiString A)
    {
    int i;
    AnsiString B;
     
    for(i=1;i<A.Length()+1;i++)
       {
       if(A[i]==';')
          {
          if(i<A.Length() && A[i+1]==';')
             {
             B+=',';
             B+='-';
             B+=',';
             i++;
             }
          else
             {
             B+=',';
             }
          }
       else
          {
          B+=A[i];
          }
       }
    return B;
    }
    À bientôt
    Gilles

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Par défaut
    Effectivement, j'étais peut-être trop omnubilé par le TMemoryStream,
    je n'ai même pas penser au TStringList, qui apparemment m'a l'air assez rapide.

    Ok pour ce rafraîchisement de "my Memory" et surtout pour la soluce,

    Merci encore Gilles et bonne fin de soirée...
    jcsoft

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/01/2008, 23h16
  2. [Configuration] probleme avec le remplacement des accents
    Par xtaze dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 17/12/2005, 19h16
  3. Soucis avec le remplacement de caractères spéciaux
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/07/2005, 11h42
  4. requete select avec AS remplacement de valeur
    Par pi3141563 dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/04/2004, 22h15
  5. Problème avec TMemoryStream + jpeg
    Par zymoplex dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2004, 19h46

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