[C++]

Résolu/Fermé
Albert - 20 mai 2007 à 12:21
mamiemando Messages postés 33120 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 mai 2024 - 21 mai 2007 à 01:25
Bien le bonjour.

Je développe une application en C++ avec C++builder.
Alors voilà mon problème.

L'opérateur Logique ET (&&) .

J'ai une variable
 int VarMusic=1;
initialisée en haut de la page.

Et dans mon code j'utilise cette variable dans une (plusieurs) condition :


if ((VarMusic==0)&&(StrToInt(EdtGain->Text)<1000));
         sndPlaySound("WAVEGAIN",SND_RESOURCE | SND_ASYNC);
if ((VarMusic==0)&&(StrToInt(EdtGain->Text)>=1000));
         sndPlaySound("TONWAVE",SND_RESOURCE | SND_ASYNC);



seulement voilà, que VarMusic soit égale à 1 ou à 0 le fichier son est lu quand même.

Voici avec quoi je change la valeur de VarMusic :

void __fastcall TFCraps::On1Click(TObject *Sender)
{
      if (VarMusic==1)
      {
        VarMusic=0;
        sndPlaySound(NULL,NULL);
        Timer1->Enabled=false;
      }
      else
      {
        VarMusic=1;
        Timer1->Enabled=true;
        sndPlaySound("AMBIANCE",SND_RESOURCE | SND_ASYNC);
      }
}


Je ne comprend pas pourquoi l'opérateur logique ET ne marche pas.
J'ai mal fait quelque chose?

Si vous avez trouver n'hésitez pas parce que là je comprend plus...

2 réponses

piopicolo Messages postés 1395 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 31 juillet 2023 193
20 mai 2007 à 12:52
à mon avis c parce que tu mélanges un test logic avec un test numérique
fais d'abord un test logic et ensuite un test numérique
ce n'est que mon avis...A+ et çà va aller !
0
Bon j'ai enlevé la double condition pour la remplacer par deux conditions imbriquées, et en fait je me suis aperçu que j'avais mis des ";" après chaque "if...."
Donc forcément ça ne marchait pas.

Donc au final le fait qu'il y ai une condition logique et une numérique ne gêne pas.

Mais sans ta réponse je crois que je ne m'en serait pas aperçu

Voici le bon code :

if ((VarMusic==0)&&(StrToInt(EdtGain->Text)<1000))
          sndPlaySound("WAVEGAIN",SND_RESOURCE | SND_ASYNC);
if ((VarMusic==0)&&(StrToInt(EdtGain->Text)>=1000))
          sndPlaySound("TONWAVE",SND_RESOURCE | SND_ASYNC);



Merci pour ton aide.

Problème Résolu.
0
mamiemando Messages postés 33120 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 mai 2024 7 753
21 mai 2007 à 01:25
Pour clore le sujet un test if est vérifié si le résultat de l'opérande est différent de 0 (ou de NULL). Ca veut dire que tu peux tout à fait faire un test sur un nombre ou sur un pointeur, le test sera vérifié s'il est non nul.
0