revsys
Messages postés15Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 7 juin 2007
-
4 juin 2007 à 11:03
revsys
Messages postés15Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 7 juin 2007
-
7 juin 2007 à 14:51
Bonjour,
J'ai deux Edit qui permettent de choisir le nombre de fois où un son doit être joué pour deux sons différents.
1er problème :
La première fois que je rentre un nombre, le son est joué (x+1) fois, sauf si 1 est le premier nombre rentré, et si je rappuie sur Play le son est joué x fois comme voulu.
Si 1 est le premier chiffre rentré, le son est joué une fois, je rentre 3, le son est joué 4 fois mais si je rePlay alors il est joué 3 fois et x fois quelque soit le nombre entré.
Si 3 est le premier chiffre rentré, le son est joué 4 fois, mais aprés quelque soit le nombre entré il joue correctement.
2ème problème :
Si je rentre x, il faut que j'appuie sur stop x fois pour que le son s'arrête.
Voici le code :
var
B : integer;
Arretautorise : boolean;
procedure TForm1.btJouerClick(Sender: TObject);
begin
Lecteur;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if(Key <> chr(8))and((Key < '0')or(Key > '9'))then
begin
Key := chr(0); // Ne prend que les nombres et la touche retour
end;
end;
procedure TForm1.Lecteur;
begin
if RadioBtmont.Checkedthen
begin
Arretautorise := true; // Evite un bug si aucun son n'est
// lancé alors que nous appuyons sur Stop
MediaPlayer1.FileName := 'C:\Sons expérience\MONTE.wav';
MediaPlayer1.Open;
B:= StrToInt(Edit1.Text);
MediaPlayer1.Play;
if B <> 1then
begin
MediaPlayer1.Notify := true;
MediaPlayer1.OnNotify := NotifyProc1;
end;
end;
if RadioBtdesc.Checkedthen
begin
Arretautorise := true;
MediaPlayer1.FileName := 'C:\Sons expérience\DESC.WAV';
MediaPlayer1.Open;
C:= StrToInt(Edit2.Text);
MediaPlayer1.Play;
if C <> 1then
begin
MediaPlayer1.Notify := true;
MediaPlayer1.OnNotify := NotifyProc2;
end;
end;
end;
procedure TForm1.NotifyProc1(Sender: TObject);
begin
with Sender as TMediaPlayer do
begin
if NotifyValue = nvSuccessful then
begin
if B > 0then
begin
Play;
Dec(B);
end;
end;
Notify := True;
end;
end;
procedure TForm1.NotifyProc2(Sender: TObject);
begin
with Sender as TMediaPlayer do
begin
if NotifyValue = nvSuccessful then
begin
if C > 0then
begin
Play;
Dec(C);
end;
end;
Notify := True;
end;
end;
procedure TForm1.btArreterClick(Sender: TObject);
begin
if Arretautorise then
begin
MediaPlayer1.Stop;
end;
end;
Merci pour vos conseils, ça fait longtemps que j'ai des problèmes avec cette partie de mon programme...<!-- / message -->
revsys
Messages postés15Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 7 juin 2007 6 juin 2007 à 18:52
Ok merci pour ta réponse j'essaierai dès demain.
Pour les NotifyProc, j'en utilise deux un pour B et l'autre pour C, mais je testerai en en utilisant qu'un.
Vous n’avez pas trouvé la réponse que vous recherchez ?
revsys
Messages postés15Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 7 juin 2007 7 juin 2007 à 09:45
En mettant un ShowMessage(IntToStr(B)); au début de NotifyProc1, cela me donne :
Si je mets 1 => rien (enfin ça joue 1 fois)
Si je mets un nombre différent de 1, par exemple 3, la première fois ça m'affiche : rien, 3, 2, 1, 0 (le son est joué 4 fois).
Si je mets un nombre différent de 1, par exemple 3, la deuxième fois ça m'affiche : 3, 2, 1, 0 (le son est joué 3 fois).
Je vois donc ce que j'entendais, mais je ne vois pas du tout à quoi peut être dû le problème, à part que la première fois il exécute le MediaPlayer1.Play; du RadioButton mais pas la deuxième fois...
revsys
Messages postés15Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 7 juin 2007 7 juin 2007 à 14:51
En effet, ça marche comme ça !
Eh ben, on peut dire que tu sais trouver des solutions !!
Merci beaucoup pour tes deux réponses qui m'ont beaucoup aidé, et du temps que tu as consacré pour me répondre.