[ASP] Bizarrerie sur le test d'égalité dans un if ? [résolu]

Bizarrerie sur le test d'égalité dans un if ? [résolu] [ASP] - ASP - Programmation

Marsh Posté le 26-06-2003 à 10:03:01    

Bonjour,
 
Je viens de me mettre à l'ASP et j'ai constaté un truc bizarre :
 

Code :
  1. a = num_premier_enr
  2. b = (j - 1) * nb_enr_par_page
  3. if (a = b) then
  4. response.write a & "=" & b
  5. else
  6. response.write a & "!=" & b
  7. end if


 
Même quand a = b, le test répond toujours faux. Du coup j'obtiens un affichage du genre "10!=10". Si j'affecte 10 par exemple à a et b, là le test fonctionne.
 
Si par contre je remplace le test par :
 

Code :
  1. if (a - b) = 0 then


 
là ca fonctionne ... C'est une bizarrerie connue ? J'ai raté quelque chose (c'est possible...) ?


Message édité par KSauzeRK le 26-06-2003 à 11:31:34
Reply

Marsh Posté le 26-06-2003 à 10:03:01   

Reply

Marsh Posté le 26-06-2003 à 10:09:52    

KSauzeRK a écrit :

Bonjour,
 
Je viens de me mettre à l'ASP et j'ai constaté un truc bizarre :
 

Code :
  1. a = num_premier_enr
  2. b = (j - 1) * nb_enr_par_page
  3. if (a = b) then
  4. response.write a & "=" & b
  5. else
  6. response.write a & "!=" & b
  7. end if


 
Même quand a = b, le test répond toujours faux. Du coup j'obtiens un affichage du genre "10!=10". Si j'affecte 10 par exemple à a et b, là le test fonctionne.
 
Si par contre je remplace le test par :
 

Code :
  1. if (a - b) = 0 then


 
là ca fonctionne ... C'est une bizarrerie connue ? J'ai raté quelque chose (c'est possible...) ?  


 
Pas fait d'asp depuis longtemps, mais a = b ca ressemble à une affectation...tu évaluerais pas le résultat de cette affectation là plutot que l'égalité de tes variables?? :sarcastic:

Reply

Marsh Posté le 26-06-2003 à 10:26:17    

skeye a écrit :


Pas fait d'asp depuis longtemps, mais a = b ca ressemble à une affectation...tu évaluerais pas le résultat de cette affectation là plutot que l'égalité de tes variables?? :sarcastic:  


 
euh...non j'ai eu un moment d'inquiétude, mais en vérifiant, l'opérateur '=' devient un opérateur de test s'il est dans un if.
J'ai essayé quand même '==' pour être sur, il me sort une erreur.

Reply

Marsh Posté le 26-06-2003 à 10:56:52    

KSauzeRK a écrit :


 
euh...non j'ai eu un moment d'inquiétude, mais en vérifiant, l'opérateur '=' devient un opérateur de test s'il est dans un if.
J'ai essayé quand même '==' pour être sur, il me sort une erreur.


pb de type de donnée p-e? :??:

Reply

Marsh Posté le 26-06-2003 à 11:01:42    

skeye a écrit :


pb de type de donnée p-e? :??:  


 
j'y avais pensé aussi, peut-être le typage dynamique qui fait que les types sont pas les mêmes...par contre je vois pas dans mon code où il aurait pu considérer l'un ou l'autre comme autre chose qu'un entier.
 
J'ai essayé de déclarer comme en VB  
Dim blabla As Integer  
mais il me jette. J'avoue que j'ai pas regardé plus loin, c'est par curiosité que j'aimerais savoir pourquoi la première solution a foiré...

Reply

Marsh Posté le 26-06-2003 à 11:22:38    

Ben b il devrait considérer ça comme une valeur numérique, vu qu'il y a multiplication
 
pour a, par contre, peut-être qu'il le prend pour un string.
 
Pour être sûr que les données soient du même type, précise dans ton if
 
if (Cint(a)=Cint(b)) Then
 
ça devrait le faire.

Reply

Marsh Posté le 26-06-2003 à 11:30:47    

DeliriumTremens a écrit :

Ben b il devrait considérer ça comme une valeur numérique, vu qu'il y a multiplication
 
pour a, par contre, peut-être qu'il le prend pour un string.
 
Pour être sûr que les données soient du même type, précise dans ton if
 
if (Cint(a)=Cint(b)) Then
 
ça devrait le faire.


 
Effectivement ca le fait. Je suis un boulet, num_premier_enr est en fait une chaine de caractère...sans commentaires :sweat:  
 
Merci à vous en tout cas.

Reply

Marsh Posté le 26-06-2003 à 11:35:58    

Note que le "typage" serait plus utile au moment de la déclaration de la variable, par rapport à ce que j'ai dit.
 
a=Cint(num_premier_enr)
 
Comme ça a est un Int à chaque fois que tu en as besoin.
 
Vu que le Dim x as Type ne marche effectivement pas.
 
Mais non tu n'es pas un boulet :whistle:  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed