Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1496 connectés 

  FORUM HardWare.fr
  Programmation

  [ASP]Horreur inside!!! lisez moi ca

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASP]Horreur inside!!! lisez moi ca

n°119104
DLR
Hein c'était quoi la question?
Posté le 29-03-2002 à 16:02:28  profilanswer
 

je faisais mon ptit bonhomme de chemin en ASP, et tout a coup je me rencontre qu'une fonction est appellée alors qu'elle ne devrait pas...
bon, je matte le code, c'est du genre:
 
if (cond1 or cond2) and (functionN) then
...
end if
cond1 et cond2 sont fausse, ce qui me donne
if false and ? then ...
 
et ho! horreur! l'heretic a encore frappé! je me rencontre que le code de functionN est quand meme executé aux cas ou 'false and ?' ca donnerait true!!!!
comment se demerde ASP pour tester les conditions? il ne respecte meme pas cette regle de logique?
dans quel ordre ASP test-il ses 'if'?


---------------
Narf... It is broken...
mood
Publicité
Posté le 29-03-2002 à 16:02:28  profilanswer
 

n°119109
Mara's dad
Yes I can !
Posté le 29-03-2002 à 16:21:14  profilanswer
 

C'est un choix de tester toutes les opérandes.
En effet, il peut y avoir des effets de bord, du genre ta fonction "functionN" peut très bien écrire dans un fichier ou une BDD.
Si tu ne veux pas d'effet de bord, tu fais çà :
if (cond1 or cond2) then
   if (functionN) then  
    ...
   end if
...  
end if


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°119111
DLR
Hein c'était quoi la question?
Posté le 29-03-2002 à 16:25:53  profilanswer
 

Mara's dad a écrit a écrit :

C'est un choix de tester toutes les opérandes.
En effet, il peut y avoir des effets de bord, du genre ta fonction "functionN" peut très bien écrire dans un fichier ou une BDD.
Si tu ne veux pas d'effet de bord, tu fais çà :
if (cond1 or cond2) then
   if (functionN) then  
    ...
   end if
...  
end if  




 
oui c ce que j'ai dufaire, mais c'est debile! j'ai fais du C/C++ et je suis sur que meme en PhP il teste pas tout!
jsuis sur que c'est meme pas marqué dans la doc ca...


---------------
Narf... It is broken...
n°119113
benou
Posté le 29-03-2002 à 16:30:04  profilanswer
 

DLR a écrit a écrit :

 
 
oui c ce que j'ai dufaire, mais c'est debile! j'ai fais du C/C++ et je suis sur que meme en PhP il teste pas tout!
jsuis sur que c'est meme pas marqué dans la doc ca...  




 
C'est pas si débile que ca. Je sais que ca porte un nom les opérateur logiques pour lequel l'ordre d'évaluation des argument n'est pas défini.
Y a quelques langages qui font ca ... Suffit de le savoir.

n°119117
Mara's dad
Yes I can !
Posté le 29-03-2002 à 16:40:56  profilanswer
 

Et PHP, c'est pareil qu'en C/C++, l'évaluation des expression Booléennes sont court-circuité.
 
C'est pour çà qu'en PHP on voit souvent
 
mysql_connect(....) or die("Connection impossible" );


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°119118
DLR
Hein c'était quoi la question?
Posté le 29-03-2002 à 16:47:09  profilanswer
 

Mara's dad a écrit a écrit :

Et PHP, c'est pareil qu'en C/C++, l'évaluation des expression Booléennes sont court-circuité.
 
C'est pour çà qu'en PHP on voit souvent
 
mysql_connect(....) or die("Connection impossible" );  




Perl aussi...
tiens c'est bizarre c'est dans les meilleurs langages (langages les + utilisé, donc discutable sur le terme meilleur) que l'on retrouve ce court-cicuitage...
 
je viens d'etre tres decu par l'ASP... :(


---------------
Narf... It is broken...
n°119122
gfive
Posté le 29-03-2002 à 17:08:12  profilanswer
 

En Java (et C aussi, il me semble, mais je peux me tromper), le "&" (ou le "|" ) évalue ses DEUX opérandes, et donne un résultat, mais le "&&" (ou le "||" ) commence par évaluer le premier opérande, et n'évalue le second que si nécessaire....
 
pratique, non?? ;)

n°119184
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-03-2002 à 20:32:17  profilanswer
 

Je vais peut-être dire une bêtise, mais il me semble que le C/C++ commence l'évaluation à partir de la droite, non ?
Peut-être qu'ici pour l'ASP c'est aussi le cas, donc il faut inverser les deux opérandes du AND.
 
En tout cas je sais qu'en Pascal il commence par la gauche :
if (ListView1.Selected <> nil) and (ListView1.Selected.Data <> nil) then
ça marche très bien... Le contraire plante si Selected est nil évidemment :)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°119281
siewn
Posté le 30-03-2002 à 08:47:32  profilanswer
 

DLR a écrit a écrit :

je faisais mon ptit bonhomme de chemin en ASP, et tout a coup je me rencontre qu'une fonction est appellée alors qu'elle ne devrait pas...
bon, je matte le code, c'est du genre:
 
if (cond1 or cond2) and (functionN) then
...
end if
cond1 et cond2 sont fausse, ce qui me donne
if false and ? then ...
 
et ho! horreur! l'heretic a encore frappé! je me rencontre que le code de functionN est quand meme executé aux cas ou 'false and ?' ca donnerait true!!!!
comment se demerde ASP pour tester les conditions? il ne respecte meme pas cette regle de logique?
dans quel ordre ASP test-il ses 'if'?  




 
y'a pas d'ordre il test les 2 c tout et analyse ensuite.
par contre asp.net corrige ça et si tu fais "if condition1 and condition2" et que condition1 est false, alors il évalude pas condition2 (de la même manière si t'as "if condition1 or condition2" et que condition1 est vrai, il évalue pas condition2)

n°119305
Kristoph
Posté le 30-03-2002 à 11:27:06  profilanswer
 

Pour ceux que ca interesse, on appelle ca l'evalutation paresseuse.

mood
Publicité
Posté le 30-03-2002 à 11:27:06  profilanswer
 

n°119306
HappyHarry
Posté le 30-03-2002 à 11:35:58  profilanswer
 

et en VB c pareil ... donc en vbscript c t a prevoir

n°119315
[SDF]Poire
Vive Grumly
Posté le 30-03-2002 à 12:34:48  profilanswer
 

DLR a écrit a écrit :

 
Perl aussi...
tiens c'est bizarre c'est dans les meilleurs langages (langages les + utilisé, donc discutable sur le terme meilleur) que l'on retrouve ce court-cicuitage...
 
je viens d'etre tres decu par l'ASP... :(  




Le PERL et le PHP sont dérivés du C/C++ donc C normal que le fonctionnement de l'évaluation des tests soit le même.


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [ASP]Horreur inside!!! lisez moi ca

 

Sujets relatifs
aide sur un bp en ASP[ASP] Upload d'un fichier de plusieurs Mo
[PHP?] Monitoring d un serveur CS [noob inside]Form2mail [PHP Inside]
tailles des champs mysql [edit : ajout d'infos et d'analyse inside][ODBC - ASP] impossible de linker ma bdd !
Quelqu'un s'y connait en ASP????Sous Win XP, comment tester en local mes pages ASP ?
[plus que newbie inside] créer un exe à partir d'un raccourci et autreCompilateurs inside
Plus de sujets relatifs à : [ASP]Horreur inside!!! lisez moi ca


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR