[v4 beta6] "Variables have to be declared ... [Corrigé]

Archive.
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

[v4 beta6] "Variables have to be declared ... [Corrigé]

Message 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 ...
Dernière modification par Niffo le lun. 13/mars/2006 0:26, modifié 6 fois.
RegisLG
Messages : 154
Inscription : mer. 22/juin/2005 2:32

Message 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)

:idea: 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.
Dernière modification par RegisLG le sam. 11/mars/2006 0:52, modifié 1 fois.
RegisLG
Messages : 154
Inscription : mer. 22/juin/2005 2:32

Message 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 :

Code : Tout sélectionner

EnableExplicit
define =a
(cas classique de l'erreur de saisie)

Dans l'editeur de pb tu fais :

Code : Tout sélectionner

IncludeFile  "C:\test.pb"
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.
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message 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.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

qu'est ce qui se passe si tu remplace

Define.s variable

par

Define variable.s

?

:roll:
Image
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message 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 ! 8O
RegisLG
Messages : 154
Inscription : mer. 22/juin/2005 2:32

Message par RegisLG »

En tout cas, je persiste, si tu as un fichier qui contient

Code : Tout sélectionner

EnableExplicit
define.s List
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".
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message 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) ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ben çà ressemble bien à un vrai petit bug çà.
faudrait notifier çà sur le forum anglais.
Image
RegisLG
Messages : 154
Inscription : mer. 22/juin/2005 2:32

Message 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

Code : Tout sélectionner

'DefType' renamed to 'Define'
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message par Niffo »

Flype a écrit :faudrait notifier çà sur le forum anglais.
Je m'en charge.
Répondre