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

Discussion :

Conversion entre QString et pj_str_t

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut Conversion entre QString et pj_str_t
    Bonjour à tous,

    j'utilise Qt pour le gui de mon application SIP. Pour traiter SIP, j'utilise le framework pjsip 2.1. Je suis souvent confronté au problème de conversion de chaine de caractères. En effet je récupère les données de mon formulaire Qt sous forme d'un QString et je dois le convertir en pj_str_t pour le passer au framework pjsip. Voici actuellement comment je fais pour passer de QString à pj_str_t

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QString mystring = m_qtField.text();       
    QByteArray ba = mystring.toLatin1();      
     
    m_pj_account_cfg.username = pj_str(ba.data()); //ceci fonctionne
    Ce code fonctionne mais comme je dois le faire de nombreuse fois, je me suis dis que j'allai créer un classe pjsipQtWrapper qui va contenir des fonctions pour ce genre de conversion. Je crée donc une fonction comme ceci :

    pjsipqtwrapper.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class PjsipQtWrapper
    {
    public:
        static pj_str_t ToPj_str(QString *string);
    };
    pjsipqtwrapper.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "pjsipqtwrapper.h"
     
    pj_str_t PjsipQtWrapper::ToPj_str(QString *string)
    {
        QByteArray ba = QByteArray();
        ba = string->toLatin1();
        return pj_str(ba.data());
    }
    Lorsque que j'utilise ce code et que je print les valeurs à différents endroit comme par exemple dans la fonction, juste après la fonction etc. je vois des valeur correctes, mais lorsque que je l'assigne à un champs de structure pjsip, j'obtient des erreurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    m_pj_account_cfg.id = PjsipQtWrapper::ToPj_str(&mystring); //ne fonctionne pas
     
    pj_str username_p = PjsipQtWrapper::ToPj_str(&mystring);
    m_pj_account_cfg.id = username_p; //ne fonctionne pas
    Je n'ai vraiment aucune, mais aucune idée de mon erreur.

    merci d'avance de votre aide.

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Ça pourrait être utile de mettre les messages d'erreur .

    Au fait, pourquoi prendre un pointeur en paramètre ? Tu prends le risque qu'il soit nul à un moment ; si tu utilises une référence, elle sera toujours valide (dans le code machine généré, pas de différence notable avec les pointeurs).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    Salut et merci de ta réponse. Ben il n'y a pas vraiment de message d'erreur mis à part celui généré par la librairie pjsip qui me dit que le mon URI est invalide (car je cherche a attribuer une valeur a un champ pj_str_t qui est l'uri d'un serveur SIP).

    Tu as raison je ne sais pas pourquoi j'ai utilisé le pointeur. Je vais modifier la définition de ma fonction comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static pj_str_t ToPj_str(QString& string);
    j'espère que le problème venait de là.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    Alors après test, j'ai toujours le même problème. et voici l'erreur mais sa ne va pas aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    01:48:54.759    pjsua_acc.c  .Invalid local URI: Invalid URI (PJSIP_EINVALIDURI) [status=171039]
    01:48:54.759    pjsua_acc.c  .Error adding account: Invalid URI (PJSIP_EINVALIDURI) [status=171039]
    Je ne comprend vraiment rien

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

Discussions similaires

  1. Conversion entre QChar et QString
    Par Invité dans le forum Débuter
    Réponses: 5
    Dernier message: 11/03/2013, 11h50
  2. [Socket] Conversation entre 2 ordi
    Par madislak dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/11/2006, 10h41
  3. Réponses: 5
    Dernier message: 30/08/2006, 15h10
  4. Fin de conversation entre client et serveur
    Par Stany dans le forum C++
    Réponses: 2
    Dernier message: 15/07/2005, 11h07
  5. conversion en QString
    Par transistor49 dans le forum C++
    Réponses: 5
    Dernier message: 08/03/2005, 13h52

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