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

Langage C++ Discussion :

Signification de : "typedef void PortMidiStream;"


Sujet :

Langage C++

  1. #21
    Invité
    Invité(e)
    Par défaut
    Merci bien Médinoc,

    J'ai rectifié le code.

    je suis toujours planté par un Storage_Error ceci dis.

  2. #22
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Attention, il s'agit en fait de trois octets, pas deux octets et un mot de 16 bits.
    Arf oui, tiens, c'est seulement sur 24 bits, j'avais lu trop vite...

    Citation Envoyé par Médinoc Voir le message
    De plus, en passant par un record, tu t'exposes à des problèmes d'endianness, non?
    Oui, c'est toujours une possibilité... Personnellement, je ferais l'opération "comme en C", c'est à dire sur un entier 32 bits en utilisant des décalages.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #23
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    N'étant pas une flèche en math, j'ai opté pour une autre solution afin de formater le long.

    Mai par contre je ne sais si je doit me retrouver pour un message "(0x90, 60, 100)" avec 100060144 ou 144060100.
    Merci pour vos réponses.

  4. #24
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pm_Message(0x90, 60, 100) équivaut à Pm_Message(0x90, 0x3C, 0x64), qui doit donner 0x00643C90 (ou 6569104 en décimal)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #25
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Pm_Message(0x90, 60, 100) équivaut à Pm_Message(0x90, 0x3C, 0x64), qui doit donner 0x00643C90 (ou 6569104 en décimal)
    Ok ! Merci bien Médinoc !

  6. #26
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'ai réussis à formater mon message.

    Mais a priori, j'ai toujours un problème avec l'objet PortMidiStream.

    Merci encore. @+

  7. #27
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme j'en avez l'intuition, la fonction OpenOutput modifie le paramètre PortMidiStream.
    Comme avec Ada il est impossible de le faire, j'ai contourné le problème avec un petit code C que voici :

    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
    30
     
    #include <stdio.h>
    #include <portmidi.h>
    #include <porttime.h>
     
    #define DRIVER_INFO NULL
    #define OUTPUT_BUFFER_SIZE 0
    #define TIME_PROC ((long (*)(void *)) Pt_Time)
    #define TIME_INFO NULL
    #define TIME_START Pt_Start(1, 0, 0) /* timer started w/millisecond accuracy */
     
    long latency = 0;
     
    PmStream * midi;
     
    int Open_Handler (int device) {
     
     
     
      TIME_START;
     
      Pm_OpenOutput(&midi, 
                    device, 
                    DRIVER_INFO,
                    OUTPUT_BUFFER_SIZE, 
                    (latency == 0 ? NULL : TIME_PROC),
                    (latency == 0 ? NULL : TIME_INFO), 
                    latency);
      return midi;
    }
    Je récupère mon adresse et le tour est joué.


    Merci pour votre aide

  8. #28
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Heu... Comment ça, impossible en Ada ??? Et les modificateurs "In Out", alors, ils servent à décorer le sapin de Noël ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  9. #29
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Heu... Comment ça, impossible en Ada ??? Et les modificateurs "In Out", alors, ils servent à décorer le sapin de Noël ?
    Dans une fonction avec Ada, tous les paramètre en entrée ne peuvent être modifié, c'est que des in. C'est d'ailleurs la distinction qui est faite avec Ada entre procédure et fonction.
    Un fonction ne modifie pas les donnée, alors qu'un procédure si.

  10. #30
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Donc, tout comme dans les mauvais langages, il est impossible d'avoir un élément de programme qui peut à la fois modifier des trucs et retourner une valeur?

    Enfin au moins dans ton cas, tu devrais toujours pouvoir remplacer la fonction par une procédure et sa valeur de retour par un autre paramètre in/out...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #31
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Donc, tout comme dans les mauvais langages, il est impossible d'avoir un élément de programme qui peut à la fois modifier des trucs et retourner une valeur?
    Si tu pense être plus intelligent que les ingé du DoD des USA... Soit
    Citation Envoyé par Médinoc Voir le message
    Enfin au moins dans ton cas, tu devrais toujours pouvoir remplacer la fonction par une procédure et sa valeur de retour par un autre paramètre in/out...
    Non, le prototype des fonctions ou procédures importées doit refléter la fonction ou procédure importer... Tu penses bien.. Vois !

  12. #32
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par jovalise Voir le message
    Dans une fonction avec Ada, tous les paramètre en entrée ne peuvent être modifié, c'est que des in. C'est d'ailleurs la distinction qui est faite avec Ada entre procédure et fonction.
    Un fonction ne modifie pas les donnée, alors qu'un procédure si.
    Désolé si je parais désagréable, mais vouloir m'expliquer l'Ada ou le Pascal, c'est peut-être "un peu" gonflé... Si je te dis que "In Out" règle ton problème, c'est parce que c'est le cas.

    Essaie ce code, tu verras bien :
    Code Ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Procedure Inc ( B : In Out Integer ) is
    Begin
         B:=B+1;
    End Inc ;
    Quand je te dis que les passages par référence existent en Ada, ce n'est pas une supposition, c'est une certitude...

    Citation Envoyé par Médinoc Voir le message
    Donc, tout comme dans les mauvais langages, il est impossible d'avoir un élément de programme qui peut à la fois modifier des trucs et retourner une valeur?
    Bien sûr que non. De ce point de vue, Ada fonctionne à l'identique de Pascal et C : le passage par défaut est fait par valeur, et il faut expliciter les passages par référence (modificateur "Var" en Pascal, et "*"+"&" en C).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  13. #33
    Invité
    Invité(e)
    Par défaut
    Ok !
    je suis près à prendre une leçon ...
    Comment importes tu cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PmError Pm_OpenInput( PortMidiStream** stream,
                    PmDeviceID inputDevice,
                    void *inputDriverInfo,
                    long bufferSize,
                    PmTimeProcPtr time_proc,
                    void *time_info );

  14. #34
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Comme ça :
    Code Ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Pm_OpenInput ( stream : In Out PortMidiStream ;
                inputDevice : PmDeviceID ;
                inputDriverInfo : In Out System.Address ;
                bufferSize : Long_Integer ;
                time_proc : System.Address ; -- Est en fait un pointeur de fonction, attention...
                time_info : In Out System.Address )
                Return PmError ;
    Bien sûr, il faut adapter les types composés (PmError, PmDeviceID, PortMidiStream) en conséquence.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  15. #35
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Comme ça :
    Code Ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Pm_OpenInput ( stream : In Out PortMidiStream ;
                inputDevice : PmDeviceID ;
                inputDriverInfo : In Out System.Address ;
                bufferSize : Long_Integer ;
                time_proc : System.Address ; -- Est en fait un pointeur de fonction, attention...
                time_info : In Out System.Address )
                Return PmError ;
    Bien sûr, il faut adapter les types composés (PmError, PmDeviceID, PortMidiStream) en conséquence.
    Avec tout mon respect hein !

    Une fonction ne peu contenir que des paramètre en in ...
    Compile un truc, tu te fais un hello world, avec une fonction et des parametre en in out essayes ! Sérieux !

  16. #36
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par jovalise Voir le message
    Compile un truc, tu te fais un hello world, avec une fonction et des parametre en in out essayes ! Sérieux !
    Ah oui, autant pour moi : c'est le modificateur Access qu'il faut mettre dans une fonction, et non pas "In Out".

    Ce qui ne change pas le fait qu'une fonction peut modifier ses arguments, n'est-ce pas ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  17. #37
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Bien sûr que non. De ce point de vue, Ada fonctionne à l'identique de Pascal et C : le passage par défaut est fait par valeur, et il faut expliciter les passages par référence (modificateur "Var" en Pascal, et "*"+"&" en C).
    Désolé d'avoir cru jovalise quand il a dit que le passage par référence était réservé aux procédures et interdit aux fonctions...

    Ce que je considère comme absurde quel que soit le langage, DoD ou pas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #38
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Désolé d'avoir cru jovalise quand il a dit que le passage par référence était réservé aux procédures et interdit aux fonctions...

    Ce que je considère comme absurde quel que soit le langage, DoD ou pas.
    J'ai jamais parlé de passage par référence.

  19. #39
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Ah oui, autant pour moi : c'est le modificateur Access qu'il faut mettre dans une fonction, et non pas "In Out".

    Ce qui ne change pas le fait qu'une fonction peut modifier ses arguments, n'est-ce pas ?
    Testé, marche pas plus.
    @+

  20. #40
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par jovalise Voir le message
    J'ai jamais parlé de passage par référence.
    Pardon, passage de paramètre en lecture et écriture, ce qui implique un passage par référence ou pointeur (les pointeurs n'étant pas vraiment les bienvenus dans un langage "safe" comme Ada).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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