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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pasbel
Messages : 28
Inscription : mer. 10/avr./2019 17:36

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

Message 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 ?
Mesa
Messages : 1093
Inscription : mer. 14/sept./2011 16:59

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

Message par Mesa »

Tout au début du programme ajoute:

Code : Tout sélectionner

Declare Test1()

M.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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.
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

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





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
pasbel
Messages : 28
Inscription : mer. 10/avr./2019 17:36

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

Message par pasbel »

Effectivement, ça marche.
Donc mieux vaut déclarer toutes ses procédures au début.
Merci à vous 2.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message 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
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

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

Message 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
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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...
Répondre