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 :

appel des fonctions d'un fichier .h


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut appel des fonctions d'un fichier .h
    Je travaille sur un projet où j’utilise la bibliothèque DTAPI Dektec si quelqu’un la connait, donc j’ai en import le fichier DTAPI.h(téléchargeable sur internet avec ces bibliothèques .lib) ci-joint,et donc je veux appeler ds fonctions pour les utiliser afin de récupérer les données des cartes vidéos donc j’ai essayé ça par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     __int64 Freq;
    		DTAPI_RESULT ra;
    		/*ra = m_DemodCtrl.GetDemodControl());
    		*/
    		int b;
    		ra = m_DtOutp.GetRfControl(Freq,b);
    		LogF("freq %.2f",ra);
    Avec la fonction GetRfControl qui est déclarée dans DTAPI.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     DTAPI_RESULT  GetTunerFrequency([out] 
    __int64& FreqHz);
    Mais il retourne 0.00,je voulais savoir est ce que la méthode d’appel est bonne,et comment appeler des fonctions avec en paramètres un variable de sortie
    le fichier joint n'est pa complet j'ai met juste un extrait
    Merci
    Fichiers attachés Fichiers attachés
    • Type de fichier : h DTAPI.h (12,8 Ko, 1699 affichages)

  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,

    ce qui t'intéresse c'est la fréquence ou le code retour de la fonction ?
    Parce que là tu affiches le code retour de la fonction...

    Un paramètre out, comme son nom l'indique, c'est toi qui fournit la variable qui stocke le résultat, la fonction se chargera d'en modifier la valeur. Le passage par référence ne demande là aucune action particulière de ta part (contrairement au passage par pointeur).

    Dans tous les cas, ta fréquence est stockée dans... Freq (cap'tain obvious inside ), tu as même correctement nommé tes variables (coup de chance ?).
    Alors pourquoi afficher ra, qui est le code retour de la fonction, et pas la valeur de Freq ?
    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
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    merci Bousk,j'ai essayé avec Freq mais il retourne pas le bon résultat,avec une erreur,la fonction telle qu'elle est déclarée dans le fichier DTAPI.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DTAPI_RESULT DtOutpChannel::GetRfControl (
    [in] __int64& RfRate, // RF frequency in Hz
    [out] int& LockStatus // Lock status of RF PLL
    );
    et moi j'ai fait ça pour l'appeler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    __int64 Freq;
    		DTAPI_RESULT ra;		
    		int b;
    		ra = m_DtOutp.GetRfControl(Freq,b);
    		LogF("freq %.2f",Freq);
    Oui je veux qu'elle me retourne la fréquence,et je n'ai pas bie compris comment ça marche le paramètre out !!

  4. #4
    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
    Il te faut lire la doc de ta lib.

    Mais je ne comprends pas ce que tu essayes de faire, ou alors tu comprends pas ce que tu fais.

    Tu as une méthode DTAPI_RESULT GetTunerFrequency([out] __int64& FreqHz);
    qui, si je m'en tiens à son nom, est sensé te donner la fréquence.
    Et toi tu utilises DTAPI_RESULT DtOutpChannel::GetRfControl (
    [in] __int64& RfRate, // RF frequency in Hz
    [out] int& LockStatus // Lock status of RF PLL
    );

    Y'a pas comme un souci ?

    Quant aux paramètres out... c'est un principe basique du langage
    Si tu passes ton paramètre par référence, tu passes la variable elle-même, ce qui permet de la modifier à l'intérieur de la fonction. C'est juste une utilisation détournée du passage par référence, puisque le C++ ne permet pas de retourner plusieurs valeurs.
    On passe en paramètre out les sorties, et la fonction en elle-même retourne un code erreur.

    Donc forcément, si la méthode te retourne un code erreur, la fréquence est incorrecte.
    Mais là encore, c'est la doc qui te dira ce qu'il en est vraiment.
    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.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    Ah mais là j'ai initialisé mes paramètres __int64 Freq; int b; sans le & ,y a pas un souci là-dessus? puisque dans la fonction c'est des références avec &

  6. #6
    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
    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.

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Points : 68
    Points
    68
    Par défaut
    Merci j'ai compris le principe,j'ai même essayé avec l'autre fonction mais toujours le même problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __int64 Freq;
     
     
    		//m_DtOutp.GetRfControl(Freq,b);
    		m_DemodCtrl.GetTunerFrequency(Freq);
    		LogF("freq %.2f",Freq);

  8. #8
    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
    Le problème c'est que tu ne sais pas ce que tu fais.

    La lib fournit une méthode, qui prend un paramètre out et retourne un code erreur.
    Tu ne fais aucune vérification du code erreur.
    Si le code erreur indique qu'il y a un problème, il n'y a aucune raison que la fréquence sortie soit correcte.
    Et c'est la doc de la lib en question qui te l'indiquera.
    Doc qu'il faut lire.

    Bonne lecture.
    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.

Discussions similaires

  1. [PHP 4] Fonction appelant des objets d'un fichier OWL
    Par Mmeouerghemmi dans le forum Langage
    Réponses: 0
    Dernier message: 10/06/2014, 19h22
  2. Appel des fonctions, ouverture d'un fichier.
    Par seijuro2347 dans le forum C++
    Réponses: 1
    Dernier message: 24/09/2008, 01h12
  3. appel des fonctions d'un driver dans un programme en c
    Par richie25 dans le forum Windows
    Réponses: 5
    Dernier message: 10/01/2006, 08h27
  4. Réponses: 6
    Dernier message: 30/09/2005, 00h53
  5. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33

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