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

Qt Creator Discussion :

Qt creator - QRegExp [Débuter]


Sujet :

Qt Creator

  1. #1
    Membre du Club
    Homme Profil pro
    M2 Sécurité des systèmes d'information et cryptologie
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : M2 Sécurité des systèmes d'information et cryptologie

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Points : 68
    Points
    68
    Par défaut Qt creator - QRegExp
    Bonjour ou bonsoir,

    Voilà dans le cadre de mes études je dois élaborer une calculette cryptographique, c'est-à-dire mise en place d'algorithme de (dé)chiffrement, algorithme de (vérification de) signature, ... Il nous ait aussi demandé de réaliser une interface graphique chose qui est faite.

    Je souhaiterais "blinder" le contrôle des entrées utilisateurs. Je fonctionne essentiellement avec des fichiers pour lesquels j'ai crée des extensions spéciales (.puKey pour les fichiers contenant les clés publiques | .prKey pour les clés privées).

    Donc actuellement je me retrouve avec un QPushButton qui, quand on clique dessus, ouvre un QFileDialog. Une fois un fichier sélectionné, on remplit un QLineEdit avec le chemin du fichier précédemment sélectionné. Lorsque l'on valide le formulaire je met en place des expressions régulière afin de contrôler que l'utilisateur à bien choisi un fichier .puKey quand il doit choisir une clé publique. Seulement ma QRegExp ne fonctionne pas et je ne vois pas pourquoi c'est pourquoi je demande votre aide


    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
     
    labelPrKey = new QLabel("Choose the file which contain the private key (*.prKey) :", this);
    lePrKey = new QLineEdit(this);
    buttonBrowsePrKey = new QPushButton("Browse", this);
     
     
    QObject::connect(buttonBrowsePrKey, SIGNAL(clicked()), fdPrKey, SLOT(exec()));
    QObject::connect(fdPrKey, SIGNAL(fileSelected(QString)), lePrKey, SLOT(setText(QString)));
     
    void Sign::computeRSA(){
            QRegExp *rePrivateKey = new QRegExp("^[\w|/]+\.(prKey)$");
            if(rePrivateKey->exactMatch(lePrKey->text())){
                  RSA *rsa = new RSA();
                  rsa->sign(leHash->text().toLocal8Bit().constData(), lePrKey->text().toLocal8Bit().constData(), leFileNameSign->text().toLocal8Bit().constData());
            }
            else{
                  QMessageBox *mbFileNameSign = new QMessageBox(this);
                  mbFileNameSign->setText("Le format du nom du fichier de la signature est invalide !");
                  mbFileNameSign->exec();
            }
    }
    Ainsi avec l'expression régulière que j'ai exécuté, je m'attend à ce qu'elle accepte :
    • /home/bidon/clePrive.prKey
    • clePrivee.prKey

    mais qu'elle refuse tous fichiers dont l'extension est différent de .prKey.

    Or jusqu'à présent, elle me refuse les entrées du style
    /home/nosgiliath/Documents/M2/DLC/dlc_calculette_crypto/ressources/prRSAKey.prKey

    Afin de vous économisez, je me suis déjà rendu sur le tutoriel que vous mettez à disposition concernant les expressions régulières tutoriel QRegExp.

    Je vous remercie, pour l'attention que vous porterez à mon poste et me tiens à votre disposition pour des éventuelles précision.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Attention aux fuites de mémoire : tu alloues rePrivateKey et rsa dans ta fonction, mais ne les libères pas.
    Autant ne pas utiliser de pointeur ici (valable aussi pour mbFileNameSign qui lui est bien détruit, mais a la même durée de vie que ta classe).

    Sinon concernant ton problème : tu as oublié d'échapper l'antislash :
    Ton compilateur a dû te prévenir par le message (idem \.)
    warning: unknown escape sequence: '\w'

  3. #3
    Membre du Club
    Homme Profil pro
    M2 Sécurité des systèmes d'information et cryptologie
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : M2 Sécurité des systèmes d'information et cryptologie

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Points : 68
    Points
    68
    Par défaut
    Merci pour ta réponse Winjerome.

    En ce qui concerne le code, je n'ai mis que le strict minimum afin de rendre mon problème plus compréhensible.

    Sinon pour mon expression régulière, je suis complètement débile, je pensais pas qu'il était nécessaire d'escape le backslash, qu'il allait être interprété "naturellement", ....

    Toutes mes excuses pour le dérangement et merci encore pour ton aide précieuse.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pas de problème
    Si tu ne veux pas t'embêter avec ces échappements qui réduisent de plus la lisibilité de l'expression régulière, et si tu compiles en C++11, tu peux te servir de R"( ... )".

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

Discussions similaires

  1. [Visual Web] [SJSC] Java Studio Creator 2 est sorti
    Par Valère dans le forum NetBeans
    Réponses: 7
    Dernier message: 19/11/2007, 00h38
  2. Réponses: 0
    Dernier message: 07/11/2005, 22h59
  3. Nom de fichier PDF Creator
    Par le_parrain dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/02/2005, 18h11
  4. Réponses: 1
    Dernier message: 26/08/2004, 16h23
  5. 3D games creator
    Par SQUAL dans le forum DirectX
    Réponses: 2
    Dernier message: 21/02/2003, 17h44

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