Page 1 sur 1
Goto et Select
Publié : lun. 07/nov./2005 12:07
par LavaLava
Code : Tout sélectionner
Procedure Test()
A$ = "le texte"
D = 1
Debut:
B$ = A$
C = MessageRequester("Test","Voulez vous recommencer ?",#PB_MessageRequester_YesNo)
; If C = 6 : Goto Debut : EndIf
Select C
Case 6
Goto Debut
EndSelect
EndProcedure
Test()
j'ai résumé ce bug (si cela en est un) dans ce petit exemple.
en fait j'ai l'impression que faire un goto dans un select perturbe PB.
Si on clique 'oui' au requester, pb plante et me dit 'invalid acces memory' ...
Si j'utilise If à la place de Select cela fonctionne !
Je n'ai pas trouvé de restriction pour l'utilisation de goto avec select ...[/code]
Publié : lun. 07/nov./2005 12:29
par Chris
Oui, il y aurait bien comme un problème
Et si tu mets A$ en Static, quand tu cliques sur "Oui", ça fonctionne, puis si tu cliques ensuite sur "Non", ça plante : "Invalid access memory"
Etrange !

Publié : lun. 07/nov./2005 16:46
par LavaLava
Effectivement, j'avais vu qu'avec Protected, Static ou simplement en initialisant B$=0 en debut de procedure, cela decale l'erreur à la sortie de procedure.
Mais l'erreur était plus évidente comme cela !
Publié : mar. 13/déc./2005 0:20
par Fred
Effectivement, il y a un probleme de decalage de pile, car Select mets le resultat intermediaire sur la pile. Si tu fais un goto brutal (qui est juste un saut pure et simple), la pile n'est pas ajusté et ca crash. Je vais rajouter une mention dans l'aide, car c'est pas évident a premiere vue.
Publié : mar. 13/déc./2005 17:15
par Anonyme2
Pour moi je pense que supprimer les goto serait un plus
Publié : mar. 13/déc./2005 17:31
par filperj
C'est une espèce protégée!
On en voit déjà plus beaucoup...