La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 27/04/2024 09:02:57


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Damz
Grand Chevalier
Inscrit le: 01 Mar 2007
Messages: 102
Répondre en citant
Posté le : 10/07/2007 23:40:21 Sujet du message : Problème avec les switchs et les déclarations

J'ai remarquer une sorte de problème lorsque l'on utilisais des switchs en faisant des déclarations.
Je vais donner un exemple :

Le code suivant fait cette erreur de compilation :
SKIPPING DECLARATION VIA "case" STATEMENT DISALLOWED.
(ligne : case SPELL_RESURRECTION:)

NWScript :

void main()
{
int nSpell = GetSpellId();

switch (nSpell)
{
  case SPELL_TENSERS_TRANSFORMATION:
  effect eFail = EffectSpellFailure();
  break;

  case SPELL_RESURRECTION:
  break;
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Par contre si on sort la déclaration du case l'erreur de compilation n'a plus lieu.

NWScript :

void main()
{
int nSpell = GetSpellId();
effect eFail;

switch (nSpell)
{
  case SPELL_TENSERS_TRANSFORMATION:
  eFail = EffectSpellFailure();
  break;

  case SPELL_RESURRECTION:
  break;
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Bien sûr ce problème semble assez mineur vu qu'il peut toujours être régler en remplaçant le switch et les case par des if et des else.

Mais je me demandais si certain d'entre vous avez remarquer ce problème et trouver une autre solution et une explication logique à cette erreur.


Il est possible que j'ai mal chercher et que je n'ai pas trouver un topic qui parle déjà de se problème dans ce cas là je m'en excuse.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 12/07/2007 13:59:32 Sujet du message :

Le principale problème viendrait du fait d'utiliser une variable définie(créée) dans un if, un else ou dans un case car rien n'assure que le programme passera par là et donc la variable peut ne pas exister.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Damz
Grand Chevalier
Inscrit le: 01 Mar 2007
Messages: 102
Répondre en citant
Posté le : 12/07/2007 14:06:23 Sujet du message :

Oui mais dans ce cas là l'erreur ce retrouverai quand on remplace le switch et les case par des if.

De plus j'ai remarqué que le code suivant ne provoquais pas d'erreur

NWScript :

void main()
{
int nSpell = GetSpellId();

switch (nSpell)
{

  case SPELL_RESURRECTION:
  break;

  case SPELL_TENSERS_TRANSFORMATION:
  effect eFail = EffectSpellFailure();
  break;

}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 12/07/2007 14:49:22 Sujet du message :

Peut-être que tu éviterais ce problème si tu déclarais ta variable dès le début du script, mais sans lui affecter de valeur.

Et seulement ensuite, dans les différents cas, tu attribues une valeur à la variable déjà déclarée. J'ai pas testé mais faudrait essayer.

Edit : au temps pour moi, c'est ce que tu as fait dans le second exemple, et ça fonctionne Embarassed
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 24.732ms