Page 1 sur 1

Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : mar. 20/avr./2021 16:33
par pasbel
Salutatous
Je rencontre un problème bizarre en appelant une procédure dans une autre procédure. J'ai un message d'erreur disant que le nom de la procédure appelée n'est ni une fonction, ni un tableau, ni une liste, ni une map (carte ?), ni une macro.
Première réaction, je me suis dit "PureBasic ne peut pas appeler une procédure à l'intérieur d'une autre procédure ?". Bien que sceptique, je vérifie, on peut bien, même de façon récursive.
Ce n'est donc pas ça.
Du coup, je crée un petit bout de code pour test :

Code : Tout sélectionner

Procedure test1()
  Debug "test 1"
EndProcedure
Procedure test2()
  Debug "test 2"
EndProcedure
Procedure test3()
  test1()
  test2()
EndProcedure
test3()
Tout fonctionne, pas d'erreur, l'affichage se fait dans la console. J'ai ajouté la création de la fenêtre, avec affichage graphique dedans pour tester dans les mêmes conditions que mon "vrai" programme, tout marche bien.

Par contre, dans mon "vrai" programme, celui sur lequel je travaille, j'ai remis le même type de ligne, j'ai le problème aussi au moment de la compilation.

Image

Si je met la ligne en cause en commentaire, plus de soucis.

Une idée ?

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : mar. 20/avr./2021 17:57
par Mesa
Tout au début du programme ajoute:

Code : Tout sélectionner

Declare Test1()

M.

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : mar. 20/avr./2021 19:49
par Ollivier
Soit tu déclares, comme dit Mesa, soit tu déplaces ta procédure avant ton appel : c'est le principe de ce compilateur, ratisser le programme de haut en bas, et faire correspondre. Declare permet de prévenir le compilateur qu'une procédure sera précisée plus bas, mais sa syntaxe doit être préalable.

Code : Tout sélectionner

Declare.D Addition(A.D, B.D, C.D = 0.0)

; ...

Procedure.D Addition(A.D, B.D, C.D = 0.0)

; ...
Si la déclaration n'est pas strictement identique, ça engendrera un autre type d'erreur.

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : mar. 20/avr./2021 20:23
par venom
En gros pour suivre ton screen :

Code : Tout sélectionner

; ********** en debut de code **********
Declare draw_text2()
Declare test1()

Procedure draw_text2()
  test1()
EndProcedure

Procedure test1()
  Debug "test 1"
EndProcedure

draw_text2()





@++

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : mer. 21/avr./2021 17:07
par pasbel
Effectivement, ça marche.
Donc mieux vaut déclarer toutes ses procédures au début.
Merci à vous 2.

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : jeu. 22/avr./2021 7:34
par Micoute
Bonjour à tous,

pour me faciliter la vie, j'ai fait cet utilitaire bien pratique qui affiche toutes les procédures d'un programme, il suffit alors de faire un copier-collé

https://www.dropbox.com/sh/ooml42tsp7pe ... JLwTa?dl=0

Ne pas oublier de mettre
en ligne de commande le chemin complet de Filtre Declare.exe
en argument %TEMPFILE
et en Nom: Declare

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : jeu. 29/avr./2021 10:37
par Marc56
pour me faciliter la vie, j'ai fait cet utilitaire bien pratique qui affiche toutes les procédures d'un programme, il suffit alors de faire un copier-collé
https://www.dropbox.com/sh/ooml42tsp7pe ... JLwTa?dl=0
:wink: Tu a oublié de "déclarer" :mrgreen: l'auteur initial du programme.

Code : Tout sélectionner

;* Programname       : Declare-Filter
;* Filename          : Declare-Filter.pb
;* Filetype          : Main source   [Main source, Includefile, Data file]
;* Version           : 1.03 (english version)
;* Date              : 13.02.2008
;* Autor             : Markus Haacke (www.gismeth.de)
Declare-Filter autom. procedure declarations tool
https://www.purebasic.fr/english/viewtopic.php?p=232772
https://www.gismeth.de/software/purebas ... ter_en.htm

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : jeu. 29/avr./2021 16:26
par Micoute
J'aurais bien voulu être capable de faire ça, tout ce que je peux dire c'est que je n'ai pas fait un plagia.

Re: Erreur lors de l'appel d'une Procedure à partir d'une autre Procedure

Publié : ven. 30/avr./2021 8:22
par Ollivier
J'ai cliqué sur le lien de Micoute.

Alors, j'ai découvert un nombril aux contours lisses et bronzés, entouré d'un mètre ruban, et un message << perdez 10 kilos en moins de 10 jours >>.

Peut-être que les balises de code seraient plus simples? Surtout que le Droppe-boxe il me demande 3 fois si je veux télécharger Filter-folder.txt...