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 :

Problème readline et HTML Color HEX


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème readline et HTML Color HEX
    Bonjour,
    je rencontre un problème dans une application en ligne de commande qui importe des chaînes de caractères dans un db Sqlite.


    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
    std::list <std::string> alist;
    vector <string> vsyms;
    boost::regex regsep("\t");
    ifstream fin(infile);
    while( fin.good() ) {
     
     getline(fin,line);
     if(not(regex_match(line,regvalid))) continue;
     boost::regex_split(std::back_inserter(alist),line, regsep);
     while( alist.size() ){ vsyms.push_back(*(alist.begin())); alist.pop_front();}
     ..
     for( unsigned i = 0; i < vsyms.size(); i++ ){
     
      cout << "this is it:" << vsyms[i] << endl;
     
     }
     
    }
    ..

    Si la ligne contient des codes de couleur HTML comme #F0FFFF ou #FFEBCD, l'impression est désordonnée, avec "this is it" à la fin, et pas de code de couleur.

    Dans mon appli, un peu plus compliquée que l'exemple j'imprime:

    :--:: Mon Jul 1 11:22:58 2013

    au lieu de:

    *** 3_MergeFile_(d=3): 3: #FFFF00:--:Color HEX:: Mon Jul 1 11:22:58 2013

    mais seulement si le contenu est un Color Hex.

    Où est l'erreur?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    je n'ai rien compris.
    Quel est le rapport entre un code couleur, \t, du code HTML et une db ?
    As-tu débugué un peu tout ça ? Que valent fin, line à chaque itération, etc...?
    Qu'est-on sensé comprendre de la sortie (?) que tu donnes et te sembles fausse ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Test complet
    Merci de votre réponse.
    J'ai récrit un petit test complet qui exemplifie mon problème:

    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
    52
    53
     
    /// Includes:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <unistd.h>
     
    #include <boost/regex.hpp>
    #include <boost/algorithm/string.hpp>
    #include <readline/readline.h>
    #include <readline/history.h>
     
    using namespace std;
     
    unsigned mySplit(std::list<std::string>& l, std::string& s, boost::regex& r)
    {
       return boost::regex_split(std::back_inserter(l), s, r);
    }
     
    int main(int argc, char **argv){
     
    	string line;
    	boost::regex regsep("\\t"), regvalid(".+\\t.+"), myreg;
    	int cnt, error;	error = argc;
    	string arg = (string) argv[1];
    	const char* infile = arg.c_str();
    	string title;
    	vector <string> vsyms;
     
    	/// Load file:
    	ifstream fin(infile);
     
    	/// Process File:
    	cnt = 0;
    	while( fin.good() ) {
    		line = ""; cnt++;
    		getline(fin,line);
    		if(not(regex_match(line,regvalid))) continue;
     
    		// Split line:
    		string  params;
    		std::list <std::string> alist; alist.clear(); vsyms.clear();
    		mySplit(alist,line,regsep);
    		title  = *(alist.begin()); alist.pop_front();
    		while( alist.size() ){ vsyms.push_back(*(alist.begin())); alist.pop_front(); }
    		cout << to_string(error) << " : " << to_string(cnt) << " : " << title << " arg1: " << vsyms[0] << " arg2: " << vsyms[1] << endl;
    	}
    	return 0;
    }
     
    /* compilation:
    g++-4.6 -std=c++0x -Wl,-R/usr/lib -pthread -I./ -lboost_regex -lreadline test.cpp -o test
    */
    Je peux faire tourner le programme avec les 2 listes suivantes:

    liste 1:

    Color Name Color HEX
    AliceBlue #F0F8FF
    AntiqueWhite #FAEBD7
    Aqua #00FFFF
    Aquamarine #7FFFD4

    liste 2:

    Titre data1 data2
    test1 oui non
    test2 non oui
    <test3> peut-être bien

    Avec la liste 1, le résultat est illisible, mes variables d'environnement sont imprimées en fin d'output (buffer overflow?):

    correctif: ceci n'arrive plus, peut-être qu'alors il manquait une tabulation.

    # ./test liste1
    2 : 1 : Color Name arg1: Color HEX arg2: ◈◈o◈◈◈o◈◈◈◈◈◈_◈◈◈◈◈◈◈◈◈◈◈◈◈`2◈T◈:◈◈◈◈◈p◈o◈◈◈◈◈◈◈◈◈◈◈◈x!
    ◈◈◈@◈◈◈◈@`2◈[2@◈2◈E◈@◈2◈◈@◈◈◈◈6@◈|9◈◈◈◈o◈◈7@◈◈O◈wGf◈
    ◈6@◈◈o◈◈◈O=◈k◈d◈◈◈}5◈d◈◈@◈◈o◈◈6@◈◈o◈◈6@◈◈o◈◈◈o◈◈◈o◈◈◈
    (..etc..)
    »#◈◈r◈x86_64e

    Avec la liste 2, le résultat est presque bon mais pas tout à fait vers la fin:

    correctif: non avec liste2 tout est OK (il manquait effectivement une tab dans la précédente liste2):

    # ./test liste2

    2 : 1 : Titre arg1: data1 arg2: data2
    2 : 2 : test1 arg1: oui arg2: non
    2 : 3 : test2 arg1: non arg2: oui
    2 : 4 : <test3> arg1: peut-être arg2: bien

    Le plus étrange est que ceci ne concerne que l'extrant console car dans mon application les champs de la database sont remplis correctement. Problème d'encodage? J'ai essayé plusieurs encodages sans succès.

    Merci encore de votre aide.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Par ailleurs, il serait intéressant de savoir ce que contient regvalid? Peut-être que tes contenus sont ignorés parce que le hash ne matche pas ta regex "de validation"?
    Es tu sûr que tout est bien séparé par des tabulations?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Oops!
    Ok je viens de voir l'erreur, la liste1 ne contient bien sûr que deux colonnes et pas de "titre" contrairement à la liste2. C'est idiot, désolé pour le dérangement.

    En fait dans mon application une autre faute corrompait le résultat: les fin de lignes étaient CR/LF au lieu de LF.

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

Discussions similaires

  1. Problème applet avec HTML intégré
    Par NewBie_of_rostand dans le forum JBuilder
    Réponses: 4
    Dernier message: 15/03/2006, 11h48
  2. [FLASH MX] Problème de "Publish HTML"
    Par Gwenouille dans le forum Flash
    Réponses: 3
    Dernier message: 26/02/2006, 11h53
  3. [Mail] Problème mail en html
    Par Vinzius dans le forum Langage
    Réponses: 6
    Dernier message: 10/09/2005, 22h51
  4. problème de validation HTML
    Par silversky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 05/09/2005, 13h47
  5. [html][xsl]Problème valeur attribut html
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/04/2005, 13h37

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