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++Builder Discussion :

Autre contexte mais tjs problème d'appel fct interne


Sujet :

C++Builder

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut Autre contexte mais tjs problème d'appel fct interne
    Salut à tous,

    dans mon dernier post Exe joue DLL j'ai opté pour la solution donné par henderson (d'ailleur petit mot pour henderson : à cause d'un petit projet intermédiaire pour un ami je n'ai toujours pas pu avancer...) mais qui pour l'instant n'as pas abouti. Je vous conseille d'aller voir la solution donnée par henderson dans ce post afin de mieux comprendre celui-ci..

    Mon but est de vérifier si un codec vidéo (en l'occurence DivX 5.2) est installé. Suite à quelques recherches infructueuses et un bon coup de pouce de HW (cf. ICI) j'ai trouvé les fonctions de l'API Windows à utiliser.

    Seulement la fonction ICOpenFunction demande une fonction dans le style CALLBACK (je dit dans le style car je ne suis pas sûr de la définition de CALLBACK).
    Si je passe NULL comme paramètre (car je n'utilise pas la fonction), Windows ne charge pas le codec et je ne peux donc pas récupérer les informations dont j'ai besoin. J'ai donc déclaré ma fonction, cette fois-ci le __stdcall est imposé par l'API Windows.
    Lors de l'éxécution j'obtient exactement le même problème qu'avec la solution de henderson (qui en théorie devrait marcher, qui marche chez lui mais pas chez moi ) : violation d'accès à l'adresse 0000000 ce qui est en fait dû à un trop grand nombre d'exception.

    Le code utilisé :

    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
    int __stdcall Test ( void )
    {
       return 0;
    }
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       ICINFO ic_infos;
       HIC hic;
       int i = 0;
     
       while ( ICInfo( 0, i, &ic_infos ) )
       {
             // Ouverture du driver pour plus d'infos
          hic = ICOpenFunction( ic_infos.fccType, ic_infos.fccHandler, ICMODE_QUERY, &Test ); // La violation d'accès à lieu sur cette ligne !
     
          if ( hic != 0 )
          {
             ICGetInfo( &hic, &ic_infos, sizeof(ICINFO) );
             ListBox1->Items->Add( ic_infos.szName );
             ICClose( &hic );
          } else
             ListBox1->Items->Add("Ne peut pas ouvrir");
     
          ListBox1->Items->Add("---------------------------------");
     
          i++;
       }
    }
    Là j'avoue ne plus trop savoir comment m'en sortir...
    Merci d'avance pour votre aide !

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    J'ai pu résoudre mon problème en utilisant la fonction ICOpen à la place de ICOpenFunction.

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 30/01/2008, 15h27
  2. [JSTL] problème pour appeler une autre jsp
    Par forHelp dans le forum Taglibs
    Réponses: 3
    Dernier message: 09/11/2007, 11h16
  3. problème d'appel d'une fonction d'une autre classe
    Par kifouillou dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2007, 17h42
  4. Problème pour appeler une méthode d'une autre classe
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 7
    Dernier message: 03/03/2006, 13h33
  5. Réponses: 3
    Dernier message: 27/10/2005, 09h41

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