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++ Discussion :

Remplacer une chaine de caract�res dans un fichier REG


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par d�faut Remplacer une chaine de caract�res dans un fichier REG
    Bonjour,

    j'ai un besoin assez simple, je voudrais remplacer toutes les occurences d'une cha�ne de caract�re dans un fichier r�sultant de l'exportation d'une branche de la base de registre (fichier .reg)...

    J'ai tent� �a :

    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
     
    char line[1000];
    char *p;
     
    CString pathOldReg = _T("C:\\Device\\testOld.reg");
    CString pathNewReg = _T("C:\\Device\\testNew.reg");
     
    // on ouvre la source en lecture
    FILE *ficOldReg = fopen(pathOldReg, "r");
    // on ouvre la cible en écriture
    FILE *ficNewReg = fopen(pathNewReg, "w");
     
    if( !ficOldReg || !ficNewReg ) return FALSE;
     
    while(fgets(line, sizeof line, ficOldReg)){
    <div style="margin-left:40px">
    // on récupère la ligne lue jusqu'au retour-chariot
    p = strchr(line, '\n');
     
    if(!p){
    <div style="margin-left:40px">
    //"Read line is too long"
    return FALSE;</div>}  
     
    //on transforme le tableau line en chaîne de caractères
    *p = '\0';
     
    std::string sMyLine = line;
    CString sLine(sMyLine.c_str());
     
    sLine.Replace(_T("\\bhou"), _T("\\blah"));
     
    // on écrit dans le fichier final
    if(fprintf(ficNewReg, sLine.GetString()) == EOF){
    <div style="margin-left:40px">
    // "Cannot write new Reg file"
    return FALSE;</div>}</div>}
     
    fclose(ficNewReg);
    fclose(ficOldReg);
     
    return TRUE;

    Voil�, je passe tout le temps dans l'erreur "Read line is too long", sinon avec les autres m�thodes que j'ai essay�, je n'obtenais rien de bon en sortie...


    Cela ne semble pas tr�s compliqu�, pourtant...quelqu'un a-t-il une id�e ?

    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    D�tails du profil
    Informations personnelles :
    �ge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par d�faut
    Pourquoi ne pas utiliser std::ifstream et std::getline pour r�cup�rer les lignes de ton fichier ?
    Voir http://c.developpez.com/faq/cpp/?pag...ture_par_ligne

  3. #3
    Membre chevronn� Avatar de Mayti4
    Inscrit en
    F�vrier 2004
    Messages
    442
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 442
    Par d�faut
    Tu m�langes C, C++, MFC..

    Les .reg sont au format Unicode depuis la version 5 de regedit.

    Edit: Tu peux toujours exporter en version 4

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par d�faut
    Citation Envoy� par Mayti4
    Tu m�langes C, C++, MFC..
    En effet. O� est le probl�me ?

    Citation Envoy� par Mayti4
    Les .reg sont au format Unicode depuis la version 5 de regedit.

    Edit: Tu peux toujours exporter en version 4
    Le fait que cela soit au format Unicode va certainement me poser un probl�me de conversion lorsque je vais stocker mes lignes dans des string/CString/etc....c'est �a ?

  5. #5
    Membre chevronn� Avatar de Mayti4
    Inscrit en
    F�vrier 2004
    Messages
    442
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 442
    Par d�faut
    Citation Envoy� par pataguillon
    En effet. O� est le probl�me ?
    Imagine une personne te parler 3 langages en m�me temps.

    Le fait que cela soit au format Unicode va certainement me poser un probl�me de conversion lorsque je vais stocker mes lignes dans des string/CString/etc....c'est �a ?
    Oui, tu l'as remarqu� je pense.

    Soit tu utilises Unicode, soit tu utilises les .reg version 4.

Discussions similaires

  1. [AC-2010] Remplacer une chaine de caract�res dans un fichier texte
    Par jpg75014 dans le forum VBA Access
    R�ponses: 4
    Dernier message: 23/06/2015, 15h38
  2. [D�butant] Alterner remplacement d'une chaine de caract�re dans un fichier texte
    Par zazoudandan dans le forum MATLAB
    R�ponses: 1
    Dernier message: 08/05/2015, 09h38
  3. Rechercher/remplacer une chaine de caract�res dans plusieurs fichiers
    Par _shuriken_ dans le forum Shell et commandes GNU
    R�ponses: 5
    Dernier message: 31/07/2011, 20h06
  4. Remplacer une chaine de caract�re dans un fichier texte.
    Par Empty_body dans le forum VBA Access
    R�ponses: 1
    Dernier message: 19/01/2008, 11h16
  5. R�ponses: 7
    Dernier message: 27/09/2005, 11h54

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