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 Delphi Discussion :

Intégrer un son ou une image à l'application


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut Intégrer un son ou une image à l'application
    bonjour,

    je cherche le moyen d'intégrer un son ou une image a l'application notamment pour accélérer la vitesse du logiciel mais je ne sais plus comment on fait, pouriez vous m'éclairer de vote lanterne

    merci
    =-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=
    (\_/)
    (O.o)
    (> <)
    This is Bunny. Copy Bunny into your signature to help him on his way to world domination!!
    =-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Membre habitué Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Points : 188
    Points
    188
    Par défaut
    en fait il faudrait utiliser brcc32.exe pour modifier un fichier rc en rec, mon rc je l'ai créer avec le blocnote, enfin bref ça marche pas, sinon pour eviter de rendre mon application trop lourde je pourrais utiliser ça :

    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
    //Pour jouer un son au format WAV, il faut déclarer l'unité MMSystem dans la clause uses : 
     
     
    var
     Hres: THandle;
     Pres: PChar;
     
    begin
     Hres := FindResource(0, pchar('MONWAV2'), 'WAV'); // Recherche de la Ressource
     Hres := LoadResource(0, Hres); // On charge la Ressource
     Pres := LockResource(Hres);
     sndPlaySound(Pres, SND_MEMORY); // On joue le WAV 
     UnLockResource(Hres);
     FreeResource(Hres);
    End;
    mais le probleme ici c'est que le systeme prend du temps pr le charger, donc au lancement de l'application, y aurait il moyen de lancer ce chargement en arriere plan, sans que cela bloc l'utilisateur dans ses manipulations??
    =-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=
    (\_/)
    (O.o)
    (> <)
    This is Bunny. Copy Bunny into your signature to help him on his way to world domination!!
    =-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=

  4. #4
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Salut.

    Perso je ferais différemment (en fait je comprends même pas ton THandle lol).
    Moi je fais comme cela :

    {$R son_res.res}

    procedure TForm1.Button1Click(Sender: TObject);
    var RS : TResourceStream;

    begin
    RS := TResourceStream.Create(0, 'MON_SON', RT_RCDATA);
    MMSystem.PlaySound(RS.Memory, 0, SND_MEMORY or SND_NODEFAULT or SND_ASYNC);
    RS.Free;
    end;

    ça charge la ressource (qui s'appelle MON_SON qui est contenue dans son_res.res et qui est de type RCDATA) dans un ResourceStream qui est ensuite lu grâce au MMSystem (à placer dans les Uses).

    Je vois pas plus simple (du moins en intégrant le son à l'exe).

  5. #5
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut jouer un son stocké dans une ressource
    bonjour,

    j'ai un souci à peu près équivalent :
    je veux jouer SHIELD.Wav

    après avoir crée mon fichier .rc et son compilé .res
    intégration de la directive dans le source et
    j'exécute le même code qu'Avogadro

    sur point d'arrêt, Hres et Pres ne sont pas vides

    mais le son NE SORT PAS juste un toc sonore..

    je dois certainement avoir oublié un truc !?

    merci par avance

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    J'avais une application qui dans un entrepot devait envoyer à un haut parleur des numéros, je ne me suis pas emerdé, j'ai stocké les sons dans des fichiers Wav, et je lançais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PlaySound(PChar(SoundFileName), 0, SND_FILENAME);
    mais, cela chargeait à chaque fois, j'ai donc utiliser aussi des TMemoryStream (pour info, le TResourceStream est un TMemoryStream qui encapsule la triplette Find/Load/LockResource), mais je créais une instance par fichier (je ne voulais pas m'emmerder avec la compilation, les wav étaient stockés dans un fichier zip, au lancement, dezip dans temp, load temp, suppression temp) dans un Thread lancé au démarrage (il y avait plusieurs threads le temps que tout ça se lance ne posait pas problème, car pour démarrer l'application touts les voyants devait passer au vert, la dernière étape étant la connexion à la trieuse de l'entrepot)

    Le lancement du son était faite via une TThreadList indiquant les fichiers (valeur numérique) à lire séquentiellement et les éventuelles temps de pause ...

    Cela consomme de la mémoire, mais les ressources sont prêtes à être utilisé très rapidement ...

    @Squall78 , tu as la balise [CODE ] plus simple que des faire ses propres couleurs ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut jouer un son wav stocké dans une ressource
    la méthode de squall78 marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      RS := TResourceStream.Create(0, 'SHIELD', 'WAVE');
      MMSystem.PlaySound(RS.Memory, 0, SND_MEMORY or SND_NODEFAULT or SND_ASYNC);
      RS.Free;
    end;
    et celle-ci aussi (à la place de celle d'avogadro..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MonSon: Pointer; 
    begin
      MonSon := LockResource(LoadResource(HInstance, FindResource(HInstance, 'SHIELD', 'WAVE')));
      SndPlaySound(MonSon, Snd_ASync or Snd_Memory);
    end;
    laquelle est la meilleure ??

    cantador

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Perso, j'utilise Res_hia de DelphiCool pour intégrer des fichiers de données dans mon programme... A possèder absolument!
    Concernant le sample WAV, j'utilise le module de Bass plutôt que SndPlaySound car, en plus d'être plus compatible (DirectSound) il permet de réaliser bien plus de chose, comme modifier le volume, la balance, la position de lecture, la vitesse, etc... Tu trouveras un exemple et les sources dans ce sujet.

    ps: Pensez à utiliser la balise CODE pour encadrer les sources dans vos messages
    De retour parmis vous après 10 ans!!

  9. #9
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut jouer un son stocké dans une ressource
    @Sub0 :
    j'utilise aussi le soft de delphicool..bien pratique toutefois, il aurait été préférable de mettre un menu ou un bouton pour ajouter..

    Le module de bass, oui mais tout dépend de ce que tu as à faire..
    Moi c'est juste pour sonoriser une apparition de forme..donc..

    Mais ce n'était pas la question que j'avais posée :

    pm : je voulais juste savoir quelle est la meilleure méthode de programmation :
    le TStream ou le Pointer ???

    nb : j'ai bien noté la balise "CODE"

    A bientôt

    cantador

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Points : 51
    Points
    51
    Par défaut
    et pourquoi ne pas utiliser des .mp3 ?
    Avec un mediaplayer

  11. #11
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut
    J'ai un son .wav, je ne vais me compliquer à le transformer en .mp3...
    A noter que ça marche bien avec chacune des deux méthodes.

Discussions similaires

  1. Mettre du son sur une image au click
    Par kurtbosh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 09/01/2012, 18h44
  2. jouer un son sur une image passage souris
    Par ideal23 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 16/11/2009, 09h37
  3. ajouter un son sur une image dans un menu
    Par ideal23 dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 07/11/2009, 13h14
  4. Intégrer du son dans une page html
    Par marsweb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/03/2007, 15h01
  5. Réponses: 3
    Dernier message: 24/10/2005, 14h47

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