Page 1 sur 1

la precision concernant les erreurs

Publié : sam. 24/août/2013 22:10
par Backup
voila , dans le but de mettre a jour EPB sur la Version 5.11 et suivante

je charge mon prg de 11400 ligne dans Japbe avec Purebasic V5.11

je lance le code et voila ...

Image

content ... en dehors du fait que le message d'erreur ne me parait pas évident
je suis content de voir que l'erreur reproché n'est pas dans la ligne indiqué !
(ni meme dans la procedure s'y attachant )

je fais comment pour rechercher l'erreur dans un code de 11400 lignes
alors que je ne dispose d'aucunes informations supplémentaires sur l'erreur ?
la precision concernant le lieu de l'erreur aurai été un plus

le probleme c'est que le code n'a pas le temps de se lancer que l'erreur mal indiquée apparait ... :?
donc aucun moyen d'utiliser le debugger ....
le prg bloc sur cette ligne .... et démerde toi

une erreur de syntaxe est nettement plus précise , en general, elle se pose sur le probleme
mais une erreur de Booleen ..Sic :roll:

note le .l

Code : Tout sélectionner

 id.l 
n'est pas un .| ...

Re: la precision concernant les erreurs , de purebasic qui t

Publié : sam. 24/août/2013 23:10
par Arbrakan
Je compatis, ça me rappel les joies de Dark Basic Pro... des erreurs pas aux bonne lignes/fichier... Pour ça que j'ai migré sur PureBasic.
Une technique est de mettre des morceaux de code en commentaires et voir dans quel coins ça coince. (Par contre j'ai pas encore trouvé comment crée des bloc de commentaire en PB ?)

Enjoy.

Re: la precision concernant les erreurs , de purebasic qui t

Publié : sam. 24/août/2013 23:40
par falsam
Arbrakan a écrit :Par contre j'ai pas encore trouvé comment crée des bloc de commentaire en PB ?
Bonjour Arbrakan.

L'editeur officiel de Pure Basic ne dispose pas de caractéres permettant de faire des blocs de commentaire comme ça existe en Php par exemple.

Code : Tout sélectionner

/* Ceci est un commentaire
sur plusieurs lignes   */
Pour commenter plusieurs lignes, sélectionne les lignes que tu veux commenter puis Ctrl+B.
Pour dé-sélectionner plusieurs lignes, Tu sélectionnes les lignes concernées puis Alt+B.

Re: la precision concernant les erreurs , de purebasic qui t

Publié : sam. 24/août/2013 23:40
par Ar-S
Dobro a écrit :voila , dans le but de mettre a jour EPB sur la Version 5.11 et suivante

je charge mon prg de 11400 ligne dans Japbe avec Purebasic V5.11

je lance le code et voila ...

Image

content ... en dehors du fait que le message d'erreur ne me parait pas évident
je suis content de voir que l'erreur reproché n'est pas dans la ligne indiqué !
(ni meme dans la procedure s'y attachant )

je fais comment pour rechercher l'erreur dans un code de 11400 lignes
alors que je ne dispose d'aucunes informations supplémentaires sur l'erreur ?
la precision concernant le lieu de l'erreur aurai été un plus

le probleme c'est que le code n'a pas le temps de se lancer que l'erreur mal indiquée apparait ... :?
donc aucun moyen d'utiliser le debugger ....
le prg bloc sur cette ligne .... et démerde toi

une erreur de syntaxe est nettement plus précise , en general, elle se pose sur le probleme
mais une erreur de Booleen ..Sic :roll:

note le .l

Code : Tout sélectionner

 id.l 
n'est pas un .| ...
Essaye de relancer ton code en affichant ton bureau en moins grande résolution de texte... Peut être que le message est tronquée à cause ça non ?

---edit---
Commentaire CLTRL + B => ALT + B

Re: la precision concernant les erreurs , de purebasic qui t

Publié : sam. 24/août/2013 23:49
par falsam
Ar-S a écrit :Essaye de relancer ton code en affichant ton bureau en moins grande résolution de texte... Peut être que le message est tronquée à cause ça non ?
Le message exacte est
Les comparaisons booléennes ne peuvent pas être utilisées avec les opérateurs de test comme If, While, Repeat. Utilisez Bool.
Bon c'est vrai que c'est pas parlant pour autant.

Un exemple de code moisi provoquant ce type de message.

Code : Tout sélectionner

Procedure Dummy(Param1.i, Param2.i)
  ;
  ProcedureReturn param1+param2
EndProcedure

Debug Dummy(1, Param2=2)
Avec PB 4.51 et 4.61 aucun message d'erreur par contre on obtient ce message d'erreur avec les version 5.11 et 5.20.

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 0:20
par Ar-S
falsam a écrit :
Ar-S a écrit :Essaye de relancer ton code en affichant ton bureau en moins grande résolution de texte... Peut être que le message est tronquée à cause ça non ?
Le message exacte est
Les comparaisons booléennes ne peuvent pas être utilisées avec les opérateurs de test comme If, While, Repeat. Utilisez Bool.
Bon c'est vrai que c'est pas parlant pour autant.

Un exemple de code moisi provoquant ce type de message.

Code : Tout sélectionner

Procedure Dummy(Param1.i, Param2.i)
  ;
  ProcedureReturn param1+param2
EndProcedure

Debug Dummy(1, Param2=2)
Avec PB 4.51 et 4.61 aucun message d'erreur par contre on obtient ce message d'erreur avec les version 5.11 et 5.20.
Effectivement, ton Param2=2 crée l'erreur et le message est un peu vaseux..

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 0:40
par Arbrakan
Merci pour le Pro tips :)

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 9:39
par blendman
ça peut aussi être une erreur liée à une macro.
Pour ce genre d'erreur (dans une macro), comme il y a du remplacement, l'erreur n'est jamais indiqué dans la macro, mais plutôt là où le compilateur l'a remplacé.
Donc, dans notre code, on ne la trouve pas à cet endroit, il faut aller voir dans la macro ^^.

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 9:43
par Fred
C'est surtout que l'erreur est sur la bonne ligne: "id.l=0" dans un appel de fonction, ca n'est pas une syntaxe valide. Faut se réveiller au lieu de s'emballer et de faire tout un palabre pour rien ;).

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 10:13
par Backup
ce code fonctionne parfaitement avec la Version 4.61
cette syntaxe , c'est toi meme qui nous a permis de le faire
ça permettais de mettre une valeur par defaut dans les parametres de fonctions !
si maintenant ça plus possible , il faut le signaler , et nous donner la bonne syntaxe ! :)

ajouter Bool() a chaque fois , n'est pas une evolution positive du langage ;)
Ar-S a écrit :Effectivement, ton Param2=2 crée l'erreur et le message est un peu vaseux..
ben oui , le signe "=" n'est pas une comparaison Booleenne ! mais une comparaison mathematique
moi je cherchais un (!,&,|,or,and,xor)

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 10:30
par case
dans le cas ou tu veux une valeur par defaut ton param=2 tu dois le mettre dans la definition de la procedure pas dans l'apel de celle ci


Procedure Dummy(Param1.i, Param2.i=2)
;
ProcedureReturn param1+param2
EndProcedure

Debug Dummy(1) ; le 2° parametre utilise la valeur par defaut.on pourrait ecrire Dummy(1,2)


dans tu fait un param = 2 c'est une comparaison qui renvoi un resultat booleen
il renvoi false si param <> 2
et true si param=2

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 10:32
par Fred
J'ai modifié un peu le message d'erreur:

"Les comparaisons (=, <, >, <>, =< et >=) sont uniquement supportees apres les mot clefs tel que If, While, Until ou dans la fonction Bool()."

Re: la precision concernant les erreurs , de purebasic qui t

Publié : dim. 25/août/2013 10:36
par Backup
Merci pour toutes ces précisions :)
quoiqu'il en soit , ma remarque a le merite d'avoir informé les lecteurs du forum, qui comme moi ignoraient la chose :)

Re: la precision concernant les erreurs

Publié : dim. 25/août/2013 15:07
par Backup
juste pour dire, que je ne viens pas ici que pour râler

je suis content :)

j'ai réussi a passer tout le Code de EPB en version 5.11
ainsi que tout les prg attenant :)

bon j'ai toujours mon probleme de Selection
mais je vais pouvoir partir sur des bases saines :D

Re: la precision concernant les erreurs

Publié : lun. 26/août/2013 9:08
par blendman
@dobro : yep, merci pour ta remarque, car du coup, le message de Fred est plus clair maintenant dans le cas de ce type d'erreur.

@fred : merci pour le nouveau message, ça permettra de mieux comprendre quand on a ce type d'erreur ;)