Page 1 sur 1
[v4 beta6] "Variables have to be declared ... [Corrigé]
Publié : ven. 10/mars/2006 20:52
par Niffo
Dans un projet assez complexe (10000 lignes environ et une dizaine de fichiers), le compilateur me trouve des "With 'EnableExplicit', variables have to be declared: define" !!
En clair, il me demande de déclarer le mot "Define" à l'endroit ou justement je déclare la variable.
Impossible visiblement à reproduire avec un programme de 3 lignes ...
Publié : sam. 11/mars/2006 0:33
par RegisLG
Tu peux reproduire la même erreur en suivant cette procédure :
1. tu copies/colles l'exemple de la doc
Code : Tout sélectionner
EnableExplicit
Define a
a = 20 ; Ok, as declared with 'Define'
b = 10 ; Will raise an error here
2. tu te positionnes sur la ligne "b=10" et tu remplace "b" par "define" en prenant soin de laisser ton curseur sur la même ligne, de façon à ce que le mot clé define ne soit pas reconnu par l'IDE et ne devienne pas "Define".
F5 => Tu obtiens exactement la même erreur.
Tu passes ton curseur sur la ligne suivante, le mot clé est reconnu comme "Define", le message d'erreur change et devient "Ligne 6: Invalid name: 10 (ce qui est normal ca le code est volontairement incorrect)

Peut-être que dans un de tes sources (includes), tu as un "define" qui traine à la place d'un "Define" ? et cette erreur "masque" l'erreur reelle.
Publié : sam. 11/mars/2006 0:50
par RegisLG
Je confirme l'idée de la double erreur (define en minuscule + erreur de frappe) :
Supposons que tu aies saisi ton code dans un editeur de texte qui ne reconnait pas les mots cles PB, par exemple le bloc-notes Windows, tu cree un fichier texte C:\test.pb contenant ca :
(cas classique de l'erreur de saisie)
Dans l'editeur de pb tu fais :
F5 => paf tu as l'erreur "Ligne 2: With 'EnableExplicit', variables have to be declared: define"
Donc je pense que le mieux à faire, c'est de rechercher avec un éditeur de texte sensible à la casse toutes les occurences de "define" dans chacun de tes sources et de voir s'il n'y a pas un truc louche sur l'un deux.
Publié : sam. 11/mars/2006 1:13
par Niffo
Hum ... j'ai oublié de dire que mon programme (de quelques 10000 lignes donc, composées de quelques centaines de Define) compile très bien en PB4b5
http://niffo.free.fr/PB4B6.gif
Problème reproduit sur 2 machines différentes, l'une sous Win2000 et l'autre sous WinXP.
Problème reproduit aussi bien avec jaPBE qu'avec l'IDE de PB donc l'IDE n'est pas en cause.
Publié : sam. 11/mars/2006 1:50
par Flype
qu'est ce qui se passe si tu remplace
Define.s variable
par
Define variable.s
?

Publié : sam. 11/mars/2006 1:51
par Niffo
Bon ben oubliez tout, ça remarche mais je ne sais absolument pas pourquoi.
J'ai bricolé, changé le nom d'une variable, réenregistré mon fichier, remis l'ancien nom de la variable et maintenant ça compile !?
Je suppose qu'il devait y avoir un caractère invisible dans un de mes fichiers-source qui ne plaisait pas au compilateur ... (mais qui plaisait à celui de PB4b5 ?)
Je suis sûr que c'était un bug car l'erreur se produisait sur des "Define" différents en fonction du fichier depuis lequel je lançais la compilation.
Désolé pour le bruit.
@Flype : tiens, visiblement les deux syntaxes fonctionnent, je ne savais pas !

Publié : sam. 11/mars/2006 2:13
par RegisLG
En tout cas, je persiste, si tu as un fichier qui contient
et que tu le mets en include dans un autre fichier, tu te prends à coup sûr le "With 'EnableExplicit', variables have to be declared: define".
Si tu te repositionnes sur le source qui a été importé, sur une autre ligne que celle contenant le "define", et que tu relances une compilation, ça passe sans problème car le "define" est devenu "Define".
Publié : sam. 11/mars/2006 11:10
par Niffo
Bon, j'ai trouvé l'origine du problème et c'est bien "RegisLG" qui avait raison

(merci à toi), mais je persiste à dire qu'il y a un bug
J'explique :
J'avais bien des "define" en minuscule dans mes fichiers sources, mais impossibles à voir avec un IDE PB puisque ceux-ci les convertissent en "Define" à l'affichage (et seulement à l'affichage) lors du chargement.
Cependant, comment se fait-il que le compilateur de PB4b6 ne soit sensible à la casse sur aucun mot clé SAUF sur "Define" (alors que le compilateur de PB4b5 ne l'était pas) ?
Publié : sam. 11/mars/2006 12:31
par Flype
ben çà ressemble bien à un vrai petit bug çà.
faudrait notifier çà sur le forum anglais.
Publié : sam. 11/mars/2006 14:20
par RegisLG
Flype a écrit :ben çà ressemble bien à un vrai petit bug çà.
faudrait notifier çà sur le forum anglais.
Je pense que c'est au niveau de l'analyseur lexical que ça foire (define non reconnu comme mot-clé Define).
Peut-être une erreur suite à la redéfinition du mot-clé comme indiqué dans le readme
Publié : dim. 12/mars/2006 17:07
par Niffo
Flype a écrit :faudrait notifier çà sur le forum anglais.
Je m'en charge.
Publié : lun. 13/mars/2006 0:27
par Niffo