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

MFC Discussion :

Problème d'utilisation de BSTR dans une fonction (FontEncode)


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut Problème d'utilisation de BSTR dans une fonction (FontEncode)
    Bonjour à tous,

    Je suis en train de coder une application qui sort des codes barres, utilisant les PDF417. Pour convertir la chaine de caractères à coder en chaine de caractères plus pratique pour le contrôle PDF417, j'utilise une fonction membre de ce contrôle qui est FontEncode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CString ChaineInput = "";
    BSTR*  ChaineOutput ????;
     
    ...
     
    myPDF417.FontEncode(ChaineInput, NiveauSecurite, NbreCol, NbreLigne, Mode, Tilde, ChaineOutput);
    Donc ChaineInput est un CString et ChaineOutput est un BSTR*, mais voilà je n'arrive pas à sortir de résultat, et quand j'arrive à lancer l'appli, lorsque j'arrive à cette ligne, j'ai une violation d'acces.
    Est ce que vous auriez une solution ?

    Merci par avance.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Merci, j'avais trouvé quelque chose d'équivalent, mais ça ne marchait pas. Là, j'ai refait exactement ce qu'il propose, c'est à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     
    BSTR chaineOutput;
    myPDF417.FontEncode(ChaineInput, 3, 0,0,0,0, &chaineOutput);
     
    // shows using the Win32 function 
    // to free the memory for the string: 
    ::SysFreeString(chaineOutput);
    mais j'ai toujours une violation d'acces. Le SysFreeString, il faut le faire avant ou après l'appel de la fonction ?

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    J'aurais vu quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BSTR chaineOutput;
    CString ChaineInput;
     
    chaineOutput = ChaineInput.AllocSysString();
     
    blablabla;
     
    ::SysFreeString(chaineOutput);
    Par contre je ne connais pas myPDF417.FontEncode. Quelle est cette classe et qu'est supposée faire la méthode FontEncode? Peut-être le problème est-il lié à la façon dont la méthode utilise chaineOutput?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Ok, ton aide m'a beaucoup aidé. Merci. Voilà mon code qui marche, avec une manipulation supplémentaire pour convertir le BSTR résultant, en CString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    BSTR l_bsLigneOpt;
    CString l_sLigne, l_sLigneOpt;
     
    ...
     
    l_bsLigneOpt = l_sLigne.AllocSysString();
     
    m_xPDF417.FontEncode(l_sLigne, 3, 15, 0, 0, 0, 0, &l_bsLigneOpt);
    l_sLigneOpt.Format(_T("%s"), (LPCTSTR)_bstr_t(l_bsLigneOpt));
    m_sPDF417code->Add(l_sLigneOpt);
     
    ::SysFreeString(l_bsLigneOpt);

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/05/2008, 13h30
  2. Utilisation de fstream dans une fonction
    Par Silverstone dans le forum SL & STL
    Réponses: 7
    Dernier message: 22/07/2006, 09h55
  3. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  4. utilisation de getdate() dans une fonction ?
    Par devdev dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/03/2005, 17h40
  5. Utilisation de Getdate dans une fonction
    Par BaronSamdi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/11/2004, 10h12

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