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 ! 8O

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! :evil:
On en voit déjà plus beaucoup...