moucate974
Messages postés8Date d'inscriptionlundi 21 juin 2004StatutMembreDernière intervention27 novembre 2009
-
25 nov. 2009 à 18:10
moucate974
Messages postés8Date d'inscriptionlundi 21 juin 2004StatutMembreDernière intervention27 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 ...
moucate974
Messages postés8Date d'inscriptionlundi 21 juin 2004StatutMembreDernière intervention27 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