Incompatibilité MySQL et Mediaplayer ?

Résolu
moucate974 Messages postés 8 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 27 novembre 2009 - 25 nov. 2009 à 18:10
moucate974 Messages postés 8 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 27 novembre 2009 - 27 nov. 2009 à 11:47
Bonjour,

J'ai un gros soucis avec mon logiciel qui se connecte à une base de donnée MySQL et l'utilisation du son (Tmediaplayer ou fonctions issues de Bass.dll).

Je suis en Delphi 2009 et j'ai bien la dernière version de 'MySQL.pas'. L'utilisation exclusive de MySQL ou de mediaplayer marche parfaitement. Le problème arrive lorsque je lance les deux dans la même application.

J'ai isolé le problème dans un petit exemple minimal (je charge juste la bibliothèque de MySQL et je lance le mediaplayer) :

procedure TForm1.Button1Click(Sender: TObject);
var monmedia: tmediaplayer;
begin
monmedia:=tmediaplayer.Create(form1);
monmedia.Visible:=false;
monmedia.Parent:=form1;
monmedia.AutoRewind:=false;
monmedia.FileName:='ma_musique.mp3';
monmedia.close;
monmedia.Open;
monmedia.Play;
// monmedia.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
libmysql_load(nil);
end;

L'erreur se produit au niveau de "monmedia.Open;" j'ai le message "Echec du Projet [...] avec le message : system exception (code ...) at ...

Quelqu'un pourrait-il m'aider ?

Merci

2 réponses

moucate974 Messages postés 8 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 27 novembre 2009
27 nov. 2009 à 11:47
Bonjour,

Effectivement le "close" ne sert à rien dans mon code. On peut l'enlever. Néanmoins, cela ne solutionne pas mon problème.

---

Après plusieurs jours de recherche, j'ai trouvé une solution. La solution consiste à utiliser la bibliothèque Bass.dll (au lieu de l'objet MediaPlayer) et de faire attention de l'ordre de chargement et de libération des bibliothèques Mysql et Bass.

L'organisation est alors la suivante :

A la création de la fenêtre principale faire dans l'ordre:
Bass_Init (-1, 44100, 0, Handle, nil)
libmySQL_load(nil);

A la destruction de la fenêtre principale faire dans l'ordre:
libmsql_free;
Bass_free;

Ensuite on peut utiliser comme on veut les functions et procédures disponibles dans ces deux bibliothèques.

En mode debug, il persiste une petite erreur (lors de la libération de la mémoire en toute fin d'exécution) qui disparait en executant le .exe

J'espère que cela pourra aider certains...
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 nov. 2009 à 02:07
Pourquoi appeller Close après avoir ouvert ton fichier ?

Cordialement, Bacterius !
0
Rejoignez-nous