| plantage au milieu des 3000 lignes... | |
|
|
Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 3:37 | |
| Gros probleme avec mon programme gpp Je vous joints un photo. Avez vous une idée ? J'ai l'impression que l'erreur se déplace le lon du programme. Bon il est trop tard pour rechercher maintenant Je suis dégouté ! [img] [/img] | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 3:53 | |
| Je pense que tu as un SUB qui n'a pas son END_SUB correspondant. Vérifie qu'il y a autant de SUBs que de END_SUBs.
Et surtout ne soit pas dégoûté ! On apprend plus de nos erreurs que de nos succès. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 9:56 | |
| Bonjour papydall ! Merci pour ton conseil, je vais tenter de regarder cela | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Plantage. Lun 15 Fév 2016 - 10:03 | |
| Bonjour.
Cette erreur intervient lorsqu'on tente d'accéder à un élément d'un objet List ou Dlist au-delà du nombre de ses éléments. J'ai déjà eu affaire à ce genre d'erreur. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 10:22 | |
| Erreurs provoquées : - Code:
-
list 10 : item_add 10,"Un seul article" print item_read$(10,1) print item_read$(10,2) : ' <----- Indice de liste hors limites end SUB Truc() print "SUB doit être terninée par END_SUB" ' END_SUB : ' <----- Indice de liste hors limites
| |
|
| |
Invité Invité
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 10:44 | |
| Pour ce qui est de l'indice -1, je ne sais plus. Mais on peut aussi avoir une idée plus précise: - Code:
-
list 1:item_add 1,1:item_add 1,2 :color 1,255,255,100
teste():' déplacez cette ligne, puis testez. end sub teste() message item_read$(1,3) ' end_sub Lorsqu'on fait appel à une liste dont on a dépassé l'indice, le nombre obtenu dans celui-ci est le nombre d'élément de la liste. Si dans l'exemple de ce code, vous déplacez la ligne: "teste()", vous verrez que le nombre donné dans l'indice est celui de la ligne où cet appel est donné. |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 12:42 | |
| Bonjour a tous ! Merci pour vos réponses. Je viens de reprendre le programme par un backup sur mon WEBDAV sur un autre PC. Après quelques recherches et modifications suite a vos remontés, tout fonctionne de nouveau. J'avais effectivement un problème de SUB-END_SUB et aussi un problème dans un DLIST ou LIST Il ne me reste plus qu'a tout sauvegarder de nouveau et refaire le test sur mon PC habituel de soir. Encore merci pour votre rapidité. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 12:43 | |
| bonjour à tous
@minibug j'ai déposé sur mon webdav un outils en version alpha que je développe:pano_debug. Cette version actuelle te donne le dernier numéro de ligne éxécuté avant plantage, ainsi que le nom du fichier incriminé(source principal ou include). Le fonctionnement est simple: fichier---> ouvrir, puis executer---> run. Dès que le programme à débuguer s'arrete, ferme le. Alors un message apparait avec nom de fichier+n° ligne+contenu de variable.
Il y a possibilité de connaitre le contenu de qq variables, mais seulement sur le numéro de ligne qui cause le plantage, il suffit de modifier le contenu du mémo; Exemple avec un fichier de test "fenetre clignote.bas" qui plantait à la ligne 49:
SPY_("fenetre clignote.bas","49") : debug_spy_var(adr(0),adr(0),adr(0),adr(0),adr(0),adr(0)) : WRITE_BUFFER_DWORD( pFLASHWINFO% , 16 , dwTimeout% )
devient:
SPY_("fenetre clignote.bas","49") : debug_spy_var(adr(pFLASHWINFO%),adr(dwTimeout%),adr(0),adr(0),adr(0),adr(0)) : WRITE_BUFFER_DWORD( pFLASHWINFO% , 16 , dwTimeout% )
c'est rudimentaire et en version alpha, mais j'espere que ça pourra au moins t'aider. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 18:07 | |
| @Minibug
Je suis content pour toi.
Je te donne un « miniconseil » A chaque fois où tu commences à coder une SUB(quelque_chose), juste après (et avant toute instruction), ajoute en bas END_SUB. Ça éviterait bien des désagréments.
@Silverman J’irai certainement sur ton webdav pour tester pano_debug et merci d'avance pour le partage. | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 21:49 | |
| Ça c'est un bon (mini)conseil papydall, c'est aussi comme ça que je fais: SUB() END_SUB et après je développe le contenu. Et pareil pour les sous-programmes d'ailleurs S/p: RETURN | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 21:54 | |
| Bin woui, les grands esprits se rencontrent ! | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: plantage au milieu des 3000 lignes... Lun 15 Fév 2016 - 22:28 | |
| T'as raison, on est les meilleurs ! (à part les autres ) | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Mar 16 Fév 2016 - 0:42 | |
| Bon alors là rien ne va plus ! J'étais en pleine execution du programme et d'un seul coup : PATATRA !!! l'erreur est revenue. Du coup au lancement suivant j'ai de nouveau d'erreur ! je n'y comprends rien J'au beau tout fermer tout quitter et ouvrir de nouveau éditeur et programme et toujours la même chose. J'abandonne pour ce soir, a demain... (la nuit porte conseil ) | |
|
| |
Invité Invité
| Sujet: Re: plantage au milieu des 3000 lignes... Mar 16 Fév 2016 - 1:05 | |
| On ne sait jamais. Je viens de faire un p'tit programme pour suivre les lignes, pour comprendre une fonction qui marche mal, et voir. J'ai mis en marche trace_on vers la partie que je surveille, et je suis les lignes ainsi. - Code:
-
label fin full_space 0 dim a,a$,b$ ,v ,w
list 10: file_load 10,"C:\TEMP\PANO\re1_calcul_lig.bas":' emplacement du programme à regarder list 2 : file_load 2,"Z:\trace.txt" : ' emplacement de trace_on "...." à modifier aussi. memo 5 : full_space 5 : font_name 5,"Consolas" : font_size 5,10 : font_bold 5 : hide 5 : bar_both 5 on_close 0,fin for a = 2 to count(2) a$ = item_read$(2,a) v = instr(a$,"=") if v > 0 a$ = right_pos$(a$,v+1)
if v > 0 v = val(a$) if v < w then item_add 5, "....." item_add 5,right$(" "+str$(v),3) + "|" + item_read$(10,v) end_if end_if w = v next a show 5 end
fin: terminate Ce doit-être bon, j'ai modifié en direct à cause de mon environnement qui est différent. |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: plantage au milieu des 3000 lignes... Mar 16 Fév 2016 - 2:20 | |
| @Minibug: Es-tu certain de ne pas sortir d'une SUB par un RETURN ou un GOTO, ou de sortir d'une SUB par un GOTO ? C'est une autre source possible de ce genre d'erreur. | |
|
| |
Invité Invité
| Sujet: Re: plantage au milieu des 3000 lignes... Mar 16 Fév 2016 - 14:30 | |
| Je me sens obligé de mettre de l'ordre dans mon poste plus haut. Même si ça n'intéresse personne, et c'est normal, je dois donner queques explications. Dans le programme en teste, il faut mettre a un endroit d'analyse, la fonction: TRON_ON nom_du_fichier. Ensuite dans mon programme, pour le list 10, il faut mettre le nom du fichier (avec le chemin, si c'est dans un autre dossier), celui du programme à testé. Dans le list 2, c'est celui du fichier TRACE_ON ... qu'il faut mettre. A la ligne 17, j'ai modifié une ligne: - Code:
-
if v < w then item_add 5, "....." Pour que la même ligne ne se répète pas si plusieurs instructions sont sur cette ligne. Faudra que je prenne le temps de voir et tester le programme de Silverman (je crois). Il est vrai qu'il est difficile d'avoir une réaction sur ce type de programme, et j'en sais quelque chose. |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: plantage au milieu des 3000 lignes... Mer 17 Fév 2016 - 7:48 | |
| Bonjour tous le monde ! J'ai définitivement trouvé mon problème. En fait il s'agit de la configuration de chaines de caractères dans un GRID ou je dois réécrire des valeurs. Et ces positions étaient certainement erronés. Comme je n'avais qu'une colonne de données, j'ai remplacé GRID par DLIST et je m'en suis sorti... @Cosmos : je vais garder ton programme de coté, car il me semble très utile. Merci encore a tous pour votre aide. | |
|
| |
Contenu sponsorisé
| Sujet: Re: plantage au milieu des 3000 lignes... | |
| |
|
| |
| plantage au milieu des 3000 lignes... | |
|