4D v14.3

Messages d'erreurs

Accueil

 
4D v14.3
Messages d'erreurs

Messages d'erreurs  


 

 

Cette section détaille les principaux messages délivrés par le compilateur. Ces messages sont de plusieurs types :

  • les warnings, qui vous aident à déjouer des pièges facilement évitables ;
  • les erreurs, qu'il vous appartient de corriger ;
  • les messages de contrôle d’exécution, délivrés dans 4D.

Ces messages sont délivrés tout au long du processus de compilation. Chaque message est accompagné ici d’un exemple de ce qui a pu le provoquer et, éventuellement, d’une explication supplémentaire.

Utilisation de pointeur(s) comme paramètre(s) de COPIER TABLEAU

 COPIER TABLEAU(LePointeur->;LeTableau)

Utilisation de pointeur(s) comme paramètre(s) de SELECTION VERS TABLEAU

 SELECTION VERS TABLEAU(LePointeur->;LeTableau)
 SELECTION VERS TABLEAU([LaTable]LeChamp;LePointeur->)

Utilisation de pointeur(s) comme paramètre(s) de TABLEAU VERS SELECTION

 TABLEAU VERS SELECTION(LePointeur->;[LaTable]LeChamp)

Utilisation de pointeur(s) comme paramètre(s) de LISTE VERS TABLEAU

 ENUMERATION VERS TABLEAU(Enum;LePointeur->)</gen9>

Utilisation de pointeur(s) comme paramètre(s) de TABLEAU VERS ENUMERATION

 TABLEAU VERS ENUMERATION(LePointeur->;Enum)

Utilisation de pointeur(s) dans une déclaration de tableau

 TABLEAU REEL(LePointeur->;5)

L’instruction TABLEAU REEL(LeTableau;LePointeur->) ne provoquera pas cet avertissement. La valeur de la dimension d’un tableau n’a pas d’influence sur son type.

Utilisation de pointeur(s) comme paramètre(s) de VALEURS DISTINCTES

 VALEURS DISTINCTES(LePointeur->;LeTableau)

Utilisation de la fonction Indefinie

 Si(Indefinie(LaVariable))

Cette méthode est protégée par un mot de passe.

Le Formulaire LeFormulaire contient un bouton avec action sans nom dans la page 1.
Tous vos boutons avec action doivent avoir un nom afin d’éviter des conflits.

Le pointeur utilisé dans cette commande doit pointer sur un Alphanumérique.

 LePointeur->≤2≥:="a"

Le pointeur utilisé dans cette commande doit pointer sur un Entier, un Entier long ou un NumériqueLaChaine≤LePointeur->≥:="a"

Un indice de tableau doit être Entier, Entier long ou Numérique.

 ALERTE(LeTableau{LePointeur->})

Il manque un paramètre à l’appel de la commande du plug-in.

 WR FIXER POLICE(LaZone)

Note : Il est possible de désactiver et d'activer individuellement des warnings avec les balises suivantes :
// %W-numero_de_warning pour désactiver un warning
// %W+numero_de_warning pour activer un warning
Ces activations et désactivations sont effectives pour tout le code analysé dans la suite du plan de compilation. Si on veut désactiver ou activer un warning de manière globale, il suffit d'insérer la balise idoine dans une méthode nommée "Compiler_xxx" car ces méthodes sont analysées en premier par le compilateur. Par exemple, pour désactiver le warning "Utilisation de pointeur(s) comme paramètre(s) de COPIER TABLEAU", il suffit d'insérer la balise "// %W-518.1" à l'endroit désiré.

Ces messages vous sont délivrés tout au long du processus de compilation. Il vous appartient de corriger ces erreurs afin de permettre au compilateur de générer une base compilée. Chaque message est accompagné ici d’un exemple de ce qui a pu le provoquer et éventuellement, d’une explication supplémentaire.
Les messages sont classés thématiquement. Les thèmes dans lesquels vous pourrez les consulter sont Typage, Syntaxe, Paramètres, Opérateurs, Plug-ins et Erreurs générales.

Typage

Cet opérateur ne peut s’appliquer à ce type de variable. Cette affectation provoquerait un conflit de type.

 LeRéel:=12,3
 LeBooléen:=Vrai
 LeRéel:=LeBooléen

Changement de la longueur maximale d'une chaîne de caractères.

 C_ALPHA(3;LaChaine)
 C_ALPHA(5;LaChaine)

Changement du nombre de dimensions d'un tableau.

 TABLEAU TEXTE(LeTableau;5;5)
 TABLEAU TEXTE(LeTableau;5)

Conflit de type sur la variable LeTableau dans le formulaire LeFormulaire.

 TABLEAU ENTIER(LeTableau)

Déclaration d'un tableau sans indice.

 TABLEAU ENTIER(LeTableau)

Il manque une variable.

 COPIER TABLEAU(LeTableau;"")

Il manque une constante.

 C_ALPHA(LaVariable;LaChaine)

Impossible de déterminer le type de LaVariable. Cette variable est utilisée dans la méthode M1.
Le type de LaVariable n’a pu être déterminé. Une directive de compilation est nécessaire.

Type de constante invalide

 OK:="Il fait beau"

La méthode M1 est inconnue.
La ligne contient un appel à une méthode qui n’existe pas ou plus.

Le champ utilisé dans cette expression provoque un conflit de type.

 MaDate:=Ajouter a date(LeChampBool;1;1;1)

La taille d'une chaîne de caractères ne peut pas dépasser 255.

 C_ALPHA(325;LaChaine)

La variable LaVariable n'est pas une méthode.

 LaVariable(1)

La variable LaVariable n'est pas un tableau.

 LaVariable{5}:=12

Le résultat de la fonction est incompatible avec l'expression.

 LeTexte:="Numéro"+Num(i)

Les types utilisés dans l’expression sont incompatibles.

 LEntier:=LaDate*LeTexte

Utilisation de la variable $i de type alphanumérique comme variable de type réel.

 $i:="3"
 $($i):=5

L'indice du tableau n'est pas numérique.

 TabEntier{"3"}:=4

Retypage de la variable LaVariable du type Texte en tableau de type Texte.

 C_TEXTE(LaVariable)
 COPIER TABLEAU(TabTexte;LaVariable)

Retypage de la variable LaVariable du type Texte en type Réel.

 LaVariable:=Num(LaVariable)

Retypage du tableau LeBooléen du type Booléen en variable de type Réel.

 LaVariable:=LeBooléen

Retypage du tableau du type Entier en type tableau de type Texte.

 TABLEAU TEXTE(TabEntier;12)

si TabEntier a été déclaré ailleurs comme tableau d'Entiers.

Seuls les pointeurs peuvent être suivis du signe ->

 LaVariable->:=5

si LaVariable n’est pas de type Pointeur.

Utilisation de la variable LaVar1 de type Texte comme une variable de type Numérique.

 LaVar1:=3,5

Utilisation d'un champ de type incorrect. [LaTable]LeChamp est un champ de type Date.

LaVariable est de type Numérique.

 LaVariable:=[LaTable]LeChamp

Syntaxe

Cette fonction ne retourne pas un pointeur.

 LaVariable:=Num("Il fait beau")->

Il n’est pas possible de dépointer cette fonction.

Erreur de syntaxe.

 Si(LeBooléen)
 Fin de boucle

Cette expression contient trop d'accolades ouvrantes ({).
La ligne comporte plus d'accolades ouvrantes que d’accolades fermantes.

Cette expression contient trop d'accolades fermantes (}).
La ligne comporte plus d'accolades fermantes que d’accolades ouvrantes.

Il manque une parenthèse fermante.
La ligne comporte plus de parenthèses ouvrantes que de fermantes.

Il manque une parenthèse ouvrante.
La ligne comporte plus de parenthèses fermantes que d’ouvrantes.

J'attendais un champ.

 Si(Modifie(LaVariable))

Il manque une accolade ouvrante.

J'attendais une variable.

 C_ENTIER([LaTable]LeChamp)

J'attendais un nombre constant.

 C_ENTIER(${"3"})

J'attendais un point virgule.

 COPIER TABLEAU(LeTableau1 LeTableau2)


Cette expression contient trop d'indices de chaîne ouvrants (MacOS).
 LaChaine≤3:="a"

Cette expression contient trop d'indices de chaîne fermants (MacOS).

 LaChaine3≥:="a"


Cette expression contient trop d'indices de chaîne ouvrants (Windows).
 LaChaine[[3:="a"

Cette expression contient trop d'indices de chaîne fermants (Windows).

 LaChaine 3]]:="a"

Je n’attendais pas un champ de type sous-table

 TABLEAU VERS SELECTION(LeTableau;Soustable)

Le type du paramètre de SI doit être booléen.

 Si(LePointeur)

L’expression est trop complexe.
Divisez votre ligne en plusieurs sous-opérations.

Méthode trop complexe.
Trop d'imbrications de Au cas ou...Fin de cas et de Si…Fin de si.

Référence à un champ inconnu.
Votre méthode, probablement copiée d’une autre base, contient •???• à la place d’un nom de champ.

Référence à une table inconnue.
Votre méthode, probablement copiée d’une autre base, contient •???• à la place d’un nom de table.

Un pointeur ne peut être défini sur cette expression.

 LePointeur:=->LaVariable+3

Utilisation incorrecte des indices de chaînes de caractères.

 LeNumérique≤3≥ou LeNumérique[[3]]

ou bien

 LaChaine≤LaVariable≥ou LaChaine[[LaVariable]]

où LaVariable n’est pas une variable Numérique.

Paramètres

Ce résultat de fonction ne peut pas être paramètre de cette méthode.

 LaMéthode(Num(LaChaine))

si LaMéthode attend un paramètre de type Booléen.

Cette routine reçoit trop de paramètres

 TABLE PAR DEFAUT(LaTable;LeFormulaire)

Cette valeur ne peut pas être paramètre de cette méthode.

 LaMéthode(3+2)

si LaMéthode attend un paramètre de type Booléen.

Conflit de type sur la variable $0.

 C_ENTIER($0)
 $0:=Faux

Conflit de type sur le paramètre générique.

 C_ENTIER(${3})
 Boucle($i;3;5)
    ${$i}:=Chaine($i)
 Fin de boucle

La routine n'attend pas de paramètre.

 AFFICHER BARRE OUTILS(MaVar)

La routine nécessite au moins un paramètre.

 TABLE PAR DEFAUT

La variable LaChaine ne peut pas être paramètre de cette méthode.

 LaMéthode(LaChaine)

si LaMéthode attend un paramètre de type Booléen.

Le type du paramètre $1 dans la méthode est différent de celui du paramètre à l'appel.

 Calcul("3+2")

avec la directive C_ENTIER($1) dans Calcul.

Le type du paramètre passé ne correspond pas au type du paramètre attendu.

 Impri("LaserWriter")

si dans la méthode Impri, $1 est de type Numérique.

L’un des paramètres de COPIER TABLEAU est une variable.

 COPIER TABLEAU(LaVariable;LeTableau)

Retypage du paramètre $1 du type réel en type Texte.

 $1:=Chaine($1)

Un paramètre ne peut être un tableau.

 RéInit(LeTableau)

Pour passer un tableau à une méthode, il faut passer un pointeur sur ce tableau.

Un paramètre ne peut être utilisé dans l'appel de cette routine.

Utilisation du paramètre $1 de type Booléen comme une variable de type Entier.

 LIRE PROPRIETES CHAMP(NoDeTable;NoDeChamp;Type;$1)

Opérateurs

Cet opérateur ne peut s'appliquer à ce type de variable.

 LeBool2:=LeBool1+Vrai

L’addition ne peut pas s’appliquer à des Booléens.

Je n'attendais pas l'opérateur >

 CHERCHER(LaTable;[LaTable]LeChamp=0;>)

Les deux opérandes ne sont pas comparables.

 Si(LeLongE=Image2)

Le signe moins ne peut pas être utilisé dans cette expression.

 LeBool:=-Faux

Plug-ins

La commande PExt du plug-in est mal définie.

Il manque des paramètres à l’appel de la commande du plug-in.

Le nombre de paramètres envoyés à la commande du plug-in est trop grand.

La commande LaVariable du plug-in est mal définie.

Erreurs générales

Deux méthodes portent le même nom : LeNom.
Pour pouvoir compiler votre base, il faut que toutes les méthodes projets aient des noms différents.

Erreur interne n° xx.
Au cas où ce message apparaîtrait dans l’une de vos bases, téléphonez au support technique de 4D et signalez le numéro de l’erreur.

Je n'ai pas pu déterminer le type de LaVariable. Cette variable est utilisée dans la méthode M1.
Le type de LaVariable n’a pu être déterminé. Une directive de compilation est nécessaire.

La méthode originale est endommagée.
La méthode est endommagée dans la structure originale. Supprimez-la ou remplacez-la.

Méthode 4D inconnue.
La méthode est endommagée.

Retypage de la variable LaVariable dans le Formulaire LeFormulaire.
Ce message apparaîtra si vous donnez, par exemple, le nom OK à une variable de type Graphe dans un formulaire.

Une fonction et une variable portent le même nom : LeNom.
Renommez soit la fonction, soit la variable.

Une variable dessinée dans le Formulaire LeFormulaire a le même nom qu'une fonction : LeNom.
Renommez soit la fonction, soit la variable.

Une méthode et une variable portent le même nom : LeNom.
Renommez soit la méthode, soit la variable.

Une commande du plug-in et une variable portent le même nom : LeNom.
Renommez soit la commande du plug-in, soit la variable.

Ces messages sont délivrés dans 4D, lors de l’utilisation de la base compilée. Ils sont affichés dans 4D dans une fenêtre d'erreur spécifique.

Dépassement de capacité d'un tableau.
Si LeTableau est un tableau à 5 éléments à un instant donné, ce message apparaîtra si vous essayez d’accéder à l’élément LeTableau{17} à cet instant.

Division par zéro.

 Var1:=0
 Var2:=2
 Var3:=Var2/Var1

Le paramètre utilisé n'a pas été passé.
Utilisation de la variable $4 alors que seuls trois paramètres ont été passés lors de l’appel courant.

Le pointeur n'est pas correctement initialisé.

 LePointeur->:=5

si LePointeur n’a pas encore été initialisé.

La chaîne dans laquelle se fait l'affectation est trop courte.

 C_ALPHA(LaChaine1;5)
 C_ALPHA(LaChaine2;10)
 LaChaine2:="Bonjour"
 LaChaine1:=LaChaine2

L'indice de chaîne n'est pas valide (trop grand ou négatif).

 i:=-30
 LaChainei≥:=LaChaine2 ou LaChaine[[i]]:=LaChaine2

La chaîne passée en paramètre est vide ou non initialisée.

 LaChaine≤1≥:=""
 LaChaine[[1]]:=""

Modulo par zéro.

 Var1:=0
 Var2:=2
 Var3:=Var2% Var1

Paramètres incorrects dans une commande EXECUTER FORMULE.

 EXECUTER FORMULE("MaMéthode(MonAlpha)")

si MaMéthode attend un paramètre autre qu’alphanumérique.

Pointeur sur une variable inconnue du compilateur.

 LePointeur:=Pointeur vers("LaVariable")
 LePointeur:="MaChaîne"

si LaVariable n’apparaît pas explicitement dans la base.

Tentative de retypage par l’intermédiaire d’un pointeur.

 LeBooleen:=LePointeur->

si LePointeur référence un champ de type Entier.

Utilisation incorrecte d’un pointeur.

 LeCaractère:=LaChaine≤LePointeur->≥
 LeCaractère:=LaChaine[[LePointeur]]

si LePointeur ne référence pas un Numérique.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Compilateur
Nom intl. : Error messages

 
VOIR AUSSI  

Conseils d’optimisation
Guide du typage
Précisions de syntaxe
Utilisation des directives de compilation

 
MOTS-CLÉS 

warning

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v11 SQL Release 6)
4D - Langage ( 4D v12.4)
4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v13.5)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)