Page 1 sur 2
[RESOLU] Je deviens dingue !! 😜
Publié : dim. 19/mars/2023 17:18
par falsam
J'essaye de coder une formule pour calculer la distance entres deux points 3D.
Code : Tout sélectionner
Result = Sqr(Pow((N0\x − N1\x), 2) + Pow((N0\y −N1\y), 2) + Pow((N0\z − N1\z), 2))
qu'importe si la formule est bonne ou pas pour le moment. (
Normalement elle devrait être bonne)
■ L'exécution (F5) me retourne un souci de parenthèse fermante. Pour moi pas de souci.
■ J'ai fait un test.
Result = (3−2) me retourne le même message d'erreur.
Debug (3 − 2) me retourne le même message d'erreur.
Debug 3 - 2 me retourne une erreur en fin de ligne.

Re: Je deviens dingue !!
Publié : dim. 19/mars/2023 17:38
par Guillot
pinaise !!!
j'ai essayé de simplifier
me retourne une erreur de syntaxe
quand à tes debug, le message d'erreur est erroné, mais la syntaxe n'est pas valide (il veut un string)
Re: Je deviens dingue !!
Publié : dim. 19/mars/2023 17:43
par falsam
Guillot a écrit : dim. 19/mars/2023 17:38
j'ai essayé de simplifier
J'ai effectivement des parenthèses superflues. Mais ca ne résout pas le souci

Re: Je deviens dingue !!
Publié : dim. 19/mars/2023 17:58
par Guillot
ouai je pense que c'est un petit bug du compilo (ou plutot de l'analyseur syntaxique)
même
me retourne une erreur de syntaxe, parfois pas !!!
je supprime le -1 ça passe
je le remet : ça passe ??
Re: Je deviens dingue !!
Publié : dim. 19/mars/2023 18:05
par boddhi
Simplifié en
Code : Tout sélectionner
Debug Sqr(Pow((4 − 2), 2) + Pow((9 − 6), 2) + Pow((25 − 5), 2))
;ou en
Debug Pow((4 − 2), 2) + Pow((9 − 6), 2) + Pow((25 − 5), 2)
Idem: Erreur de parenthèse fermante
J'ai testé avec toutes les versions PB depuis la 5.62 (j'ai désinstallé les plus anciennes) : même résultat.
En revanche, pas de problème avec des lignes du type :
Bug confirmé semble-t-il...
Re: Je deviens dingue !!
Publié : dim. 19/mars/2023 18:35
par Fig
Ca rend fou effectivement, surtout de perdre son weekend sur des bugs...
En faisant abstraction de ça, personnellement, je décompose tous les calculs car le mélange d'entier et de flottants et de parenthèses, avec Pb, ça fait des erreurs compliquées à localiser. Du coup il y a des calculs très vilains sur 10 lignes parfois.
Re: Je deviens dingue !!
Publié : dim. 19/mars/2023 22:01
par SPH
J'ai localisé l'erreur (une partie de... ?).
Un "Pow" doit avoir 2 paramètres sans calcul supplémentaire entre les parenthèses.
PS : C'est un truc qui fait tourner en bourique car maintenant, je peux avoir 2 paramètres avec calcul supplémentaire entre les parenthèses.
===
C'est un bug; pas de doute...

Re: Je deviens dingue !!
Publié : lun. 20/mars/2023 4:17
par Ollivier
- Peut-être pensez à mettre 55.0 pour la valeur 55
- Peut-être pensez à fournir des types "Double" (ou flottants) pour les fonctions qui exigent ça. (Pow() en l'occurence)
Je n'ai jamais eu de problèmes avec Pow() sauf quand je l'ai découverte : j'ai dû avoir des bugs slmilaires, puis en lisant la documentation, j'avais vu que ça traitait des nombres à virgule, et << ceci avait expliqué cela >>.
C'est ce que j'apprécie en pureBasic (comme avec le c...) : les types sont explicites et à traiter/contrôler. C'est ce qui me répugne avec le javaScript. Après, c'est vrai qu'un message d'erreur dédié en pureBasic aurait été plus propre (ex : << Type non défini >> ou << Type incompatible >> ou etc...)
Pour les parenthèses, je suis stoïque. Le rapport d'erreur de falsam me fait penser à du darkBasic de 2003. Vingt ans déjà... Quel bonheur d'avoir découvert un compilateur nommé pureBasic qui gérait parfaitement les parenthèses.
Re: Je deviens dingue !!
Publié : lun. 20/mars/2023 8:27
par Guillot
moi je pense que c'est un bug de l'analyseur syntaxique
des fois ça passe, des fois ça passe pas
Re: Je deviens dingue !!
Publié : lun. 20/mars/2023 10:02
par falsam
Guillot a écrit : lun. 20/mars/2023 8:27
des fois ça passe, des fois ça passe pas
ce code que j'ai décomposé ne passe jamais et je ne vois aucune erreur de parenthèse.
Code : Tout sélectionner
Define n0.vector3
Define n1.vector3
Define r1.f = Pow(n0\x − n1\x, 2)
Define r2.f = Pow(n0\y − n1\y, 2)
Define r3.f = Pow(n0\z − n1\z, 2)
Result.f = Sqr(r1 + r2 + r3)
Fig a écrit : dim. 19/mars/2023 18:35
je décompose tous les calculs car le mélange d'entier et de flottants et de parenthèses, avec Pb, ça fait des erreurs compliquées à localiser.
J'ai décomposé le code précédent.
Code : Tout sélectionner
Define n0.vector3
Define n1.vector3
Define r1.f = Pow(n0\x − n1\x, 2)
Define r2.f = Pow(n0\y − n1\y, 2)
Define r3.f = Pow(n0\z − n1\z, 2)
Result.f = Sqr(r1 + r2 + r3)
Même message d'erreur que précédemment.

Pour ne pas avoir d'erreur je suis obligé de décomposer de cette maniére
Code : Tout sélectionner
Define n0.vector3
Define n1.vector3
Define n0x.f = n0\x
Define n0y.f = n0\y
Define n0z.f = n0\z
Define n1x.f = n1\x
Define n1y.f = n1\y
Define n1z.f = n1\z
Define rx.f = n0x - n1x
Define ry.f = n0y - n1y
Define rz.f = n0z - n1z
Define r1.f = Pow(rx, 2)
Define r2.f = Pow(ry, 2)
Define r3.f = Pow(rz, 2)
Result.f = Sqr(r1 + r2 + r3)
C'est pas un peu trop ?
Le code initial en beaucoup plus court était celui là sur trois lignes. Mais ça ne fonctionne pas !
Code : Tout sélectionner
Define n0.vector3
Define n1.vector3
Result.f = Sqr(Pow(n0\x − n1\x, 2) + Pow(n0\y − n1\y, 2) + Pow(n0\z − n1\z, 2))
Re: Je deviens dingue !!
Publié : lun. 20/mars/2023 10:30
par blendman
coucou
OUi, il doit y avoir un bug, car même juste ça , ça me met une erreur "garbage à la fin de la ligne "n = n0\x − n1\x""
Code : Tout sélectionner
Structure vector3
x.f
y.f
z.f
EndStructure
Define n0.vector3
Define n1.vector3
Define n.f = 0
n = n0\x − n1\x
Re: Je deviens dingue !!
Publié : lun. 20/mars/2023 10:55
par falsam
vector3 est déja défini dans la version 6.01 de PureBasic. Je suppose que tu testes avec 5.73 ?
Re: Je deviens dingue !!
Publié : lun. 20/mars/2023 19:37
par Fig
falsam a écrit : lun. 20/mars/2023 10:02
C'est pas un peu trop ?
Evidemment que oui, mais c'est exactement ce que je dois faire parfois... Le sentiment de perdre beaucoup de cycle à affecter des variables intermédiaires. GRRR.
Ensuite, je groupe par essais successifs. Pénible. Je crois que c'est à cause de l'inexistence de "Cast" explicite en Pb.
Re: Je deviens dingue !!
Publié : lun. 20/mars/2023 21:23
par Ollivier
Je tenterai quand j aurai le temps sur 5.73 et 6.00LTS.
C'est possible qu'il y ait une quenouille en v6.00 car "nibble" ne fonctionnait pas sur la v6.00 sans que j'insiste trop à chercher.
En tout cas, je ne prends jamais le risque de laisser un mécanisme de changement de 'range' (32 <<<=>>> 64) se produire.
C'est soit tout 'double' soit tout 'float'...
Re: Je deviens dingue !! 😜
Publié : lun. 20/mars/2023 22:02
par falsam
En discutant sur Discord Naheuf a trouvé un truc bizarre.
Code : Tout sélectionner
Define n0.vector3
Define n1.vector3
Result.f = Sqr(Pow(n0\x − n1\x, 2) + Pow(n0\y − n1\y, 2) + Pow(n0\z − n1\z, 2))
ce code ne fonctionne pas.
Mais si je retape les -, ca fonctionne !! mes "-" ne sont pas forcément des "-"
Code : Tout sélectionner
Define n0.vector3
Define n1.vector3
Result.f = Sqr(Pow(n0\x - n1\x, 2) + Pow(n0\y - n1\y, 2) + Pow(n0\z - n1\z, 2))
Le premier code fonctionne pas, le deuxième code fonctionne.