Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Mode TRACE pour Panoramic | |
| | |
Auteur | Message |
---|
Invité Invité
| Sujet: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 13:29 | |
| .Un programme pour suivre les lignes et les variables d'un programme. En cas d'erreur, permet de retrouver la ligne ou elle s'est produite, même dans les includes. Permet aussi de stopper une boucle infini, si la boucle est sur plusieurs lignes. https://www.archive-host.com/count-673261-TRACE.7zEdit, pour éviter de remettre au premier plan: Je vois que j'ai perdu mon temps. Je me suis cassé la tête pour le fichier d'aide que j'avais fait en Html, mais en vérifiant le téléchargement, il n'y avait qu'une image. J'ai l'ai refait à partie d' Open Office, et finalement transformé en pdf, pour ceux qui ne l'utilisent pas. Les gens regarde le poste, mais ne télécharge pas. Pourtant il y en a eu des demandes pour ce type de module. La prochaine fois j'irais casser des cailloux, j'en aurais des plus petits, ce sera déjà quelque chose. Tant pis. J'invalide le lien, j'ai trouvé une erreur Je le remettrai après correction Je remets le lien. J'ai deux erreurs, mais l'une d'elle doit venir de mon préprocesseur avec la fonction Timer. La deuxième concerne dim avec les variables tableaux. Si il n'y a pas de tableau avec comme par exemple dim legume$(100), le programme devrait fonctionner pour bon nombre d'application. J'ai encore un autre problème, en étant pas sure que cela vienne du programme, je déplacerais une partie du code pour éviter une erreur (je pense avoir compris pourquoi) La seule chose qui me gène pour l'instant, est que je ne trouve pas le temps pour approfondir d'avantage mon programme, sinon, il y a longtemps que les modifications seraient faites. Si je remets le lien aujourd'hui, est le programme a fonctionné pour pleins de programmes, et que si le sujet est bloqué, cette page ne servirait à rien. Ne connaissant pas les critères de blocage, je rends le lien disponible. modifier le 21 décembre 2010. Je ne fais pas de message pour signaler la disponibilité du lien, pour la raison que rien n'a été modifié, et que Jack allant mettre un mode trace dans Panoramic, je ne vais pas lui faire injure. Par contre ce programme permet de suivre ligne par ligne, et avec la visibilité des valeurs de chaque variable de la ligne (avant lecture et après lecture de la ligne que le Panoramic exécute)
Dernière édition par cosmos70 le Mar 21 Déc 2010 - 15:48, édité 6 fois |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 20:14 | |
| Oui ?.... Ton prog de traçage est des plus succinct... Bel performance au niveau optimisation !!! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 20:21 | |
| C'est l'épuisement, Voilà un code qui est à ma portée......... Je me suis bien fait avoir, le temps que j'envoi et hop Cosmos à rectifié. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 20:24 | |
| J'imagine que c'est "DEBOGUEUR.bas" qui est le programme principal ? mais pas encore essayé... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 20:30 | |
| Depuis que tu as rectifié ton post, j'ai téléchargé le fichier, mais j'aimerai savoir avec quoi on l'ouvre, car ce n'est pas un ".bas", ni un ".exe"
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 20:37 | |
| C'est un fichier 7z, c'est à dire compacté, il faut d'abord le décompacter (avec 7zip par exemple) pour récupérer les composants | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 20:54 | |
| J'avais fait une fausse manœuvre. Je pensais avoir bien expliqué. Il faut faire un exe du Loader.bas. C'est à travers celui-ci qu'il y a transfert. Vous mettez DEBOGUEUR.bas (je vois que je n'ai pas rectifieé le nom qui devrait être ici je crois Trace.bas. Désolé. Trace.bas c'est debogueur. Il faut sauvegarder le fichier sous le nom qui vous convient, et mettre le même dans le Loader qui encore ici j'ai oublié de changer le nom: CHAIN_Copy_Debug.bas. Je récapitule, voici: - Code:
-
memo 1:width 1,1900: ' mettre large pour éviter les sauts de ligne clipboard_paste 1 if count(1)>0 if instr(UPPER$(item_read$(1,1)),"DEBUG")>0 if dir_exists("c:\temp") = 0 then dir_make "C:\temp" file_save 1,"C:\temp\trace.bas" ' modifier le chemin !!! chain "C:\TESTE\Trace_prg.bas" :' Mettre le chemin où vous allez mettre le programme Trace_prg.bas end_if if instr(UPPER$(item_read$(1,1)),"PANORAMIC")>0 file_save 1,"c:\Temp\panoramic.bas" message "c:\temp\panoramic.bas" chain "c:\temp\panoramic.bas" end_if end_if ' sauvegarder comme loader.exe
c'est celui-ci qu'il faut mettre en exe après avoir mis le bon chemin et le bon nom du programme Trace.bas, qui a été nommé dans le zip en DEBOGUEUR.bas Vous lisez bien le fichier pdf. Le programme teste_prg.bas et inclusion.bas, ne servent que d'exemple. Si vous voulez voir avec, vous mettez bien ces deux là dans le même dossier, ensuite dans teste_prg.bas, vous modifiez le chemin dans la ligne du haut, pour que le programme Trace.bas retrouve le dossier de l'include. donc - Code:
-
' programme d'essai Panoramic debug "C:\TESTE\teste prg.bas" ' **TRON** label branche width 0,600 :left 0,600 :height 0,200:caption 0,"teste prg.bas" dim a% , a$ ,b%,b$ memo 1 :on_click 1,branche item_add 1,"voyons voir" #include "inclusion.bas" for a%=1 to 10 item_add 1,a% next a% message "nouvelle inclusion du même prg" #include "inclusion.bas" end
branche: message "click sur le memo" return
"C:\TESTE\teste prg.bas" il faut adapter à votre dossier pour faire l'essai. Ce fichier une fois ouvert, vous le mettez dans le presse papier, et vous cliquez sur le Loader.exe, qui retrouvera Trace.bas, et fera le reste. Si tout est bien fait c'est automatique. Pour tout programme, il faut le mot debug, et le chemin du programme, faire une copie par CTRL A et CTRL C, cliquez sur l'icône du Loader, et le reste suit. Pour ceux qui utilise PsPad, un seul appuis sur F9 pour moi, Shift F9, pour d'autre, et le tour est joué. Avec le Loader, si vous enlevez "debug", et ayez "panoramic", en première ligne, le programme fonctionnera sans le mode trace. La soupe m'attend, à plus tard |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 22:31 | |
| J'ai oublié plusieurs choses. les variables employées. J'ai pris la lettre q en référence. J'avais besoin d'une variable courte. Donc: q , q% , qd% , q_trace$, q_trace% , q_variable%, q_len% , q_spin% , q_retour_variable%
Les labels: q2 , q3 , q4 , q5 , q6 , fin , q_variable , q_sort_controle
La variable fin, faudrait surement la revoir, si vous l'utilisez ---------- les objets. J'ai initialisé à 9950 avec objTron%, qui va de 0 à 19, ce qui fait de 9950 à 9969. A vous de voir si vous devez modifier cette variable. en ligne 188 et ligne 207. Ceci est dans Trace.bas ou comme je l'ai nommé par erreur DEBOGUEUR.bas.
Maintenant il y a une chose dans le programme sur laquelle je ne peux intervenir: c'est les objets TIMER. Il est difficile de savoir quoi faire. Faut-il les stopper, et les remettre en retour? Dans ce cas, comment savoir si un timer a déjà été stoppé par timer_off avant.
J'ai essayé plusieurs gros programmes, sans problème. Les erreurs obtenues, sont celles que j'ai provoquées, afin de faire le teste.
Une dernière chose: pour l'instant, je ne fais que l'addition d'include qu'au 1er rang. Si un include appelle un 2ème include, il n'est pas dépilé.
Là où une erreur peut peut-être intervenir, c'est pour la déclaration des variables, avec un code que je n'aurai pas testé. Pour les variables, j'ai été obligé de toutes les mettre en commentaire, pour les déclarer au départ. Ceci à cause que le programme listant le programme depuis le départ avec des détournements, j'avais constamment des erreurs de variables non déclarées, ou déjà déclarées, vu qu'elles peuvent être déclarées dans un sous programme. |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mer 17 Nov 2010 - 23:44 | |
| J'ai refait le dossier zip. J'ai remarqué une erreur dans un petit programme, avec la variable b% qui n'était pas initialisée. Dans les gros programmes, cette variable était définies au départ. De plus, je l'ai transformée en q_b%, car il n'était pas normal de l'utiliser. J'en ai profité pour modifier le label: fin en q_fin. J'ai rajouté dans le fichier pdf, les variables et labels utilisées. |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 6:54 | |
| Hello Nardo, Il y a une chose sur laquelle je n'est pas réagi: - Citation :
- Ton prog de traçage est des plus succinct...
Cela veut-il dire que je n'en montre pas assez? Il faudrait quoi? |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 8:30 | |
| bonjour, Quand j'ai posté ce message, il n'y avait qu'un seul caractère dans ton post : "." | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 10:04 | |
| Ok, je prend note. Je pensais avoir une réponse positive. Ce programme est un échec, et je pense qu'il vaut mieux que je m'abstienne de mettre des codes qui servent à rien, sinon à faire du bla-bla-bla. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 10:46 | |
| C'est loin d'être un échec, Cosmos70. Ton programme est très intéressant. Ce qui se passe, c'est que ce programme n'est pas si évident que ça à mettre en oeuvre pour quelqu'un d'autre, car toit, tu connais par coeur comment il est conçu et comment il faut s'en servir. Mais je suis certain que ça viendra - moi en tout cas, je suis en train de m'y mettre. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 10:48 | |
| un prog n'est jamais un echec ! C'est que comme dis Klaus, ce n'est pas évident à mettre en place... Bon je vous laisse, j'ai du bricolage à faire.... | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 12:49 | |
| Je veux bien comprendre qu'il y a un problème. Mais si personne n'en parle, je ne vais pas jouer aux devinettes. De plus, j'ai un compteur sur les téléchargements, Il n'a été téléchargé que 4 fois, par qui je ne sais pas.
Mon but lorsque je publie un code n'est pas de faire la pub sur moi même, ce serait plutôt le contraire. Plus d'une fois j'aurai voulu répondre à tel ou tel sujet, et je m'abstiens pour ne pas bloquer mon pseudo dans la liste. Tous les programmes ne n'intéresse pas par eux même, mais chaque fois que je peux, je les télécharge par curiosité, et celle-ci elle est plutôt absente pour ce sujet. Je suis sure qu'au lieu de faire un pdf pour expliquer et le mettre dans un zip, j'aurai publié les images directement ici, il y aurait eu des réponses. Mais vous n'êtes pas curieux.
Quand à l’installation, il y a 2 programmes, que l'on peux mettre dans le même dossier si l'on veut, mais c'est pas obligatoire. Grace au logiciel de Nardo concernant l’Éditeur PsPad, je le mets dans le dossier script de cet éditeur. Mais vous, vous le mettez où vous voulez, et vous faites un raccourcis sur le bureau ou la barre de tâche. Ce qui est important est de mettre le bon chemin pour Trace.bas.
Personnellement je me suis fait un Loader.exe beaucoup plus complexe, et j'ai le choix entre laisser le Loader charger le programme pour qu'il fonctionne normalement, ou en mode "debug". Je ne sais pas qu'elle bon mot employer pour celà : débogueur, debug mode trace.
Ce qui est gênant avec l'éditeur Panoramic, c'est la sauvegarde. il faut tout le temps cliquer sur l'icône, répondre à la boite d'ouverture, confirmer l'écrasement. Cela fait beaucoup de manœuvre pour rien et c'est principalement pour cette raison que j'ai choisi de passer par le presse papier (sans compter que si on utilise plusieurs onglets, et que chaque programme est dans un dossier différent, il faut bien faire gâffe en passant d'un onglet à l'autre de vérifier que l'on est dans le bon dossier). Avec l’éditeur que Nardo a proposé, un Ctrl S suffit. De plus avec son programme, un simple appui sur une touche de fonction suffit. Et finalement comme le chargeur, je me le suis modifié pour avoir le choix entre lancement du programme, et débogueur, il n'y a même pas besoin de mettre debug sur la 1ère ligne. Par contre si il y a des fichiers à lire dans le programme à tester et qui sont dans le même dossier que celui-là, il faut mettre le chemin en fin de ligne de la première ligne de ce programme. Cela me parait pas compliqué à mettre le chemin complet.
Maintenant il est encore possible de modifier le programme Trace.bas pour qu'il lise le presse papier, mais là il doit être exécutable, sinon, à chaque lancement, il faudra à chaque fois rouvrir un nouvelle onglet, pour le débloquer, à cause de l'instruction chain. Les trois autres petits programmes ne sont là que pour faire des testes, et montrer comment celà se passe pour les includes, mais ils n'ont aucun intérêt.
Sans question de votre part, je ne peux pas vous aidez. Si vous tenez à ce que tout le zip soit représenté ici, pourquoi pas, mais cela changera quoi? |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 16:08 | |
| - Citation :
- je pense qu'il vaut mieux que je m'abstienne de mettre des codes qui servent à rien
Bah ce n'est pas parce que ton programme n'est pas utilisé dans le mois où tu le propose qu'il n'est pas utile Un programme est toujours utile à quelqu'un, et le proposer dans cette éventualité c'est déjà pas mal et très sympa aussi Regarde Maitre Klaus propose sur son site des programmes et ne s'occupe pas de savoir s'ils ont trouvés preneurs, par contre c'est vrai que ça fait plaisir quand tu vois que des personnes ont profité de ton programme mais il ne faut pas miser sur ça pour proposer des programmes, il faut en proposer d'abord pour le plaisir d'en proposer je pense, partager la connaissance quoi Moi je ne me sers pas actuellement de ton programme, cela ne m'empêche pas d'être content que tu l'ai proposé par contre, ça me fait plaisir de voir des gens comme toi qui proposent des choses, à bas l'individualisme et le "tout commercial" sur le net | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 16:37 | |
| Je suis entièrement de ton avis, dragonno, et je poste mes logiciels dans cet esprit ! | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 17:56 | |
| Je suis désolé, vous ne m'avait pas compris. J'ai fait un programme qui liste les lignes au fur et à mesure juste avant qu'elles soit exécutées, et qui permet de voir l'état des variables avant et après exécution d'une ligne. En cas d'erreur, si l'erreur n'est pas affichée dans le message, vous avez le numéro de la ligne lors de l'exécution. Même pour un include. Je me fout de savoir si ce programme vous plait ou non, chacun ses goûts. Mais ce programme je l'ai testé avec ma façon de programmer, et comme chacun d'entre nous code différemment, je ne sais même pas s'il passe les testes pour vos programmes.
Si vous décidez de le télécharger dans six mois, et qu'il y a un problème, je vais m'amuser pour retrouver ce qui cloche, surtout pour un tel programme.
Ce programme fonctionne pour moi, la seule chose pour l'instant est qu'un include qui appelle lui même un autre include, n'a pas été codé.
Je sais que vous me voyez par mes interventions comme un perturbateur, alors que je suis ouvert à la critique lorsque c'est dans le bon sens. Beaucoup moins lorsque c'est avec mépris, et je pense que c'est la même chose pour vous.
Tant pis, c'est pas grave, mais dans six mois, j'aurai d'autre idée en tête.
Edit Là ou j'ai encore des doutes sur le programme, c'est avec les dims. Vous avez tous une manière différentes de le déclarer. Pour que le programme fonctionne depuis la première ligne, je suis obligé de les lire en premier, de les mettre en commentaire, et de refaire la ligne. Tous les essais que j'ai fait fonctionne, mais au vu du sujet qui est encore présent: "Analyse d'un programme source.bas", je me dis qu'il reste encore des problèmes dans le mien. |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 22:43 | |
| Je viens d'invalider le lien, j'ai trouvé une erreur, et étant sur deux programmes à la fois, cela peut prendre plusieurs jours. |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Mode TRACE pour Panoramic Sam 20 Nov 2010 - 22:46 | |
| - Citation :
- Je sais que vous me voyez par mes interventions comme un perturbateur,
Houlala, mais non, tu te fais des idées à mon avis Sinon tu as raison sur le fait d'avoir un retour sur le test du programme, mais c'était la façon dont tu l'a dis qui prêtait à confusion D'où mon post (Tiens bizarre, mon avis s'écrit avec un "s" alors que c'est "mon"....) | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Ven 24 Déc 2010 - 20:54 | |
| J'ai repris le programme. version pour éditeur Panoramicdernière modification: 30 déc 2010 à 12:52 les caractères \\ n'était pas représentés. J'ai du les remplacer par chr$(92) J'ai repris mon programme de tracage de programme. Je pense que maintenant il fonctionne bien. J'ai fais l'essai sur plein de programme compliqué, et je ne vois plus d'erreur. Le seul programme qui ne fonctionne pas actuellement est le tracage du débogueur lui-même, pour un problème de variable qui seont déjà définie, et qui se répète. Cela me parrait normal vu la méthode. Je pourrait l'éviter, mais compliquerait la mise en place du programme au départ. J'ai fais aussi l'essai sur des programme du forum. a titre d'essai, voyait le programme que Klaus fait sur le jeu de belote actuellement, et pour tester il y a aussi le programme de JL, consernant son cadeau de l'année dernière: une pendule à 1 euros dont voici le lien: https://panoramic.1fr1.net/t489-mon-cadeau-de-noel-une-pendule-a-1-euroJe vais faire plusieurs fenêtre, afin de facilité disons la "maintenance". Lorsqu'il y a plusieurs variante pour un programme, il n'est pas simple de s'y retrouver. Le programme suivant est pour l'editeur Panoramic, que la majorité utilise: - Code:
-
' Panoramic DEBOGAGE *** Auteur Cosmos70 *** ' modifié le 26 déc 2010 if dir_exists("c:\temp") = 0 then dir_make "C:\temp" dim a%,b%,c%,a$,b$ ,q ,include% ,flag_include% ,c$ ,v% ,d% ,e% ,labele$,d$ ,e$ ,lig_a%,dim% dim f$ , dim_er% , dossier_tron$ : dossier_tron$="C:\temp"+chr$(92) hide 0 width 0,700:height 0,screen_y:left 0,200 :caption 0,"DEBOGUEUR.bas" :' mise à hide maintenant memo 5:hide 5 :width 5,1500: ' obligé de passer par un memo pour copier le presse papier dlist 3 clipboard_paste 5 ' copier depuis le forum, je retire la ligne qui pourrait avoir "Code:" if count(5)>0 for a%=1 to 3 a$=item_read$(5,a%) if a$="Code:" repeat item_delete 5,a% a%=a%-1 until a%=0 exit_for end_if next a% end_if file_save 5,"C:\temp\trace.bas" file_load 3,"C:\temp\trace.bas"
' on regarde si chaque ligne ne commence par ":". Normalement ça ne provoque pas d'erreur ' sauf pour la méthode employée for a%=1 to count(3) a$=item_read$(3,a%) if left$(trim$(a$),1) =":" b%=instr(a$,":") a$=left$(a$,b%-1)+mid$(a$,b%+1,len(a$)) item_delete 3,a%:item_insert 3,a%,a$ end_if next a%
' on regarde si le chemin est prévu dans la ligne 1 f$=item_read$(5,1) if instr(f$,chr$(34))>0 f$=trim$(mid$(f$,instr(f$,chr$(34))+1,100)) f$=left$(f$,len(f$)-1) :' pour retirer le guillemet. ' maintenant on vérifie que le mot "bas." est absent if right$(f$,4)=".bas" for a%=len(f$) to 1 step -1 b$=mid$(f$,a%,1) : if b$=chr$(92) then f$=left$(f$,a%):exit_for next a% end_if if right$(f$,1)<>chr$(92) then f$=f$+chr$(92) dir_change f$ end_if
dlist 2 dlist 1 dlist 4 :' nom des includes' :left 4,300 dlist 6 :' mettre les includes ici, le temps de les intégrer dans 1, afin de pouvoir lire 1 include ' compris dans cette include, et qui sera lu dans 1, puisque si cette ligne existe elle ' n''est pas encore lu
dlist 100 ' je mets le label de la procédure, et les dims de départ item_add 1,"DIM q$ ,dossier_tron$: dossier_tron$=" + chr$(34) + dossier_tron$ + chr$(34) + ": LABEL q,liste_variable,suite_end:gosub liste_variable"
' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' ' voir si #include if count(3)> 1 b%=0 :' pour numéroter les #include a%=1 repeat a$=item_read$(3,a%) ' je rajoute éventuellement les includes if left$(upper$(trim$(a$)),8)="#INCLUDE" v%=instr(upper$(a$),"#INCLUDE ") :b% = b% + 1 :c$ = mid$(a$, v% + 9 , 80) : item_add 4,trim$(a$) item_add 1,"' #" + str$(b%) + " dépilé: " + trim$(a$) include%=1 file_add 6, c$ :lig_a%=a%+1 item_insert 3,a%+1,"' ==== FIN du programme #INCLUDE dépilé: "+c$+" #"+str$(b%)+" ====" for c%=1 to count(6) a$=item_read$(6,1) : item_insert 3,lig_a%,a$ : item_delete 6,1:lig_a%=lig_a%+1 next c% else item_add 1,a$ end_if a%=a%+1 until a% > count(3) or scancode=27 end_if item_add 1,"" file_save 4,dossier_tron$+"list_include.txt" ' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ' donc à suivre item_insert 1,2,"timer_off objeTron%+20:delete objeTron%+20" : ' le timer ne sert qu'à passer le END,et est détruit ' maintenant il faudrait rechercher tous les DIM et les définir de suite, et mettre les autres en commentaires. ' la ligne 1 ne compte pas, elle vient d'être rajouté pour ce programme d$="dim " :dim%=0 for a%=2 to count(1) a$=item_read$(1,a%) : dim_er%=0 b%=instr(lower$(trim$(a$)),"dim ") if b%>0 dim%=1 v%= instr(lower$(trim$(a$)),chr$(34)) if v%>0 and v%<b% dim_er%=1 else if v%>0 dim_er%=1 end_if end_if end_if
if dim_er%=0 if instr(a$,"' ")>0 and instr(a$,"' ") < b% then dim_er%=1 if instr(lower$(a$),"rem")>0 and instr(lower$(a$),"rem") < b% then dim_er%=1 end_if
if b%>0 and dim_er%=0 b$=mid$(a$,b%,900) c%=instr(b$,":") if c%>0 c$=mid$(b$,c%,900) b$=left$(b$,c%-1) e$=left$(a$,b%-1)+c$+":' "+left$(b$,c%-1) if left$(trim$(e$),1)=":" then e$=mid$(trim$(e$),2,900) else e$="' "+b$ end_if if len(d$)=4 d$=d$ + mid$(trim$(b$),5,900) else d$=d$ + ","+ mid$(trim$(b$),5,900) end_if item_delete 1,a% item_insert 1,a%,e$ end_if next a% if dim%=1 item_insert 1,2,d$ + ":timer objeTron%+20:on_timer objeTron%+20,suite_end:end" else item_insert 1,2,"timer objeTron%+20:on_timer objeTron%+20,suite_end:end" end_if
item_insert 1,3,"suite_end:" ' ------------------------------------------------------------ ' dans d$, on a toutes les variables, donc maintenant il faut les mettre en tableaux d$=mid$(d$,4,900) clear 2 repeat b%=instr(d$,",") if b%>0 b$=trim$(left$(d$,b%-1)) if b$<>"" then item_add 100,b$ d$=trim$(right$(d$,len(d$)-b%)) else b$=d$ item_add 100,b$ end_if until b%=0 ' je viens de composer le programme
' ----------------------ici on met en list les DIM ----------------------------- ' je mets les DIM en liste rem " recherche des DIM" for a%=1 to count(1) a$=trim$(item_read$(1,a%)) if upper$(left$(trim$(a$),4))="DIM " a$=trim$(right$(a$,len(a$)-4)) b%=instr(a$,":") if b%>0 then a$=trim$(left$(a$,b%-1)) b$=a$ end_if next a% sort 100 c%=0:include%=0: d%=-3 :b%=0 ' \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ' outils de tracage item_add 2,"error_french : ' Panoramic '"
item_add 2," ' ________INITIALISATION de départ_________'" item_add 2," dim objeTron% ,q:objeTron%=9950" item_add 2," label q2 , q3 , q4 , q5 , q6 , q_fin , q_variable , q_sort_controle : dim q% , qd% , q_trace$ , q_trace% ,q_variable% , q_len% ,q_spin% , q_retour_variable% , q_b%" item_add 2," ' ___FORM du bas pour contrôler et voir la ligne___'" item_add 2," form objeTron% :width objeTron%,screen_x: height objeTron%,90:top objeTron%,screen_y-110 : border_hide objeTron%" item_add 2," color objeTron%,181,207,181:command_target_is objeTron%" item_add 2," edit objeTron%+ 1:top objeTron%+1,height(objeTron%)-60:left objeTron%+1,90:font_size objeTron%+1,12:width objeTron%+1,width(objeTron%)-100" item_add 2," color objeTron%+1,255,255,150:font_bold objeTron%+1:font_name objeTron%+1,"+chr$(34)+"Bitstream Vera Sans Mono"+chr$(34)+":font_color objeTron%+1,0,0,255" item_add 2," alpha objeTron%+15:top objeTron%+15,55:left objeTron%+15,10:font_bold objeTron%+15:font_name objeTron%+15,"+chr$(34)+"Bitstream Vera Sans Mono"+chr$(34)+":font_size objeTron%+15,12" item_add 2," container_option objeTron%+2:top objeTron%+2,height(objeTron%)-90:width objeTron%+2,200:height objeTron%+2,30:left objeTron%+2,10" item_add 2," option objeTron%+ 3:parent objeTron%+3,objeTron%+2:caption objeTron%+3,"+chr$(34)+"bloque"+chr$(34)+":width objeTron%+3,50:top objeTron%+3,8" item_add 2," option objeTron%+ 4:parent objeTron%+4,objeTron%+2:caption objeTron%+4,"+chr$(34)+"continue"+chr$(34)+":width objeTron%+4,60:left objeTron%+4,70 :top objeTron%+4,8" item_add 2," option objeTron%+ 5:parent objeTron%+5,objeTron%+2:caption objeTron%+5,"+chr$(34)+"boucle"+chr$(34)+":width objeTron%+5,50:left objeTron%+5,140:top objeTron%+5,8" item_add 2," scroll_bar objeTron%+6:left objeTron%+6,350:top objeTron%+6,height(objeTron%)-80:height objeTron%+6,15:min objeTron%+6,0:max objeTron%+6,5000" item_add 2," width objeTron%+6,width(objeTron%)-400:position objeTron%+6,700" item_add 2," edit objeTron%+16:width objeTron%+16,2:height objeTron%+16,15:left objeTron%+16,450:color objeTron%+16,255,0,0" item_add 2," check objeTron%+ 7:parent objeTron%+7,objeTron%:left objeTron%+7,220:width objeTron%+7,60:height objeTron%+7,20:caption objeTron%+7,"+chr$(34)+"variables"+chr$(34)+":' hide objeTron%+7" item_add 2," top objeTron%+7,height(objeTron%)-80" item_add 2," button objeTron%+ 8:parent objeTron%+8,objeTron%:left objeTron%+8,290:width objeTron%+8,50:height objeTron%+8,20:caption objeTron%+8,"+chr$(34)+"STOP"+chr$(34)+"" item_add 2," top objeTron%+8,height(objeTron%)-80" item_add 2," edit objeTron%+14:top objeTron%+14,30 :width objeTron%+14,80:font_size objeTron%+14,12:font_bold objeTron%+14:color objeTron%+14,0,0,0:font_color objeTron%+14,255,255,255" item_add 2," ' -----------------form pour présenter une aide de départ--------" item_add 2," form objeTron%+18:width objeTron%+18,620:height objeTron%+18,550:border_small objeTron%+18" item_add 2," top objeTron%+18,250:left objeTron%+18,screen_x / 2 -150" item_add 2," memo objeTron%+19:parent objeTron%+19,objeTron%+18:font_size objeTron%+18,10:print_target_is objeTron%+19 :full_space objeTron%+19" item_add 2," print "+chr$(34)+"bloque : avance par appuie de CTRL droit ou gauche"+chr$(34) item_add 2," print "+chr$(34)+"continue: les lignes du programme avancent sans discontinuées. Le défilement des lignes, dépendent du curseur."+chr$(34) item_add 2," print "+chr$(34)+"selon l'emplacement du curseur, des différences apparaissent. A droit du trait rouge, seul le temps diffère."+chr$(34) item_add 2," print "+chr$(34)+"Si le check des variables est coché: elles s'affichent lorsqu'une variable est présente dans la ligne"+chr$(34) item_add 2," print "+chr$(34)+"Si le curseur est à droite du trait et qu'une variable est présente, une fenêtre blanche apparait. Il faut cliquer sur CTRL pour continuer."+chr$(34) item_add 2," print "+chr$(34)+"au relachement de la touche , la fenêtre apparait en jaune avec les nouvelles valeurs des variables à l'exécution du code"+chr$(34) item_add 2," print "+chr$(34)+"seul la touche CTRL Droite permet de continuer. Ainsi, si on laisse la touche droite enfoncée, les lignes et l'exécution du programme se fait en continue avec un temps d'attente réglé par le curseur"+chr$(34) item_add 2," print "+chr$(34)+"Si le curseur se trouve à gauche du trait rouge, cette 2ème fenêtre n'apparait pas. Si le curseur est à zéro, alors, le programme s'éxécute sans aucun teste, afin de passer les boucles (exemple :for a%=1 to 10000)"+chr$(34) item_add 2," print "+chr$(34)+"l'appuie sur boucle, fait selon le cas, toutes les instructions à l'intérieur d'une boucle sans intéruption, ou parfois???, s'arrète une fois la boucle finie"+chr$(34) item_add 2," print "+chr$(34)+"SI UNE ERREUR INTERVIENT: le message correspond à l'erreur, mais le numéro de la ligne est celui de la case noir. Si la case est rouge, on a un 1er numéro: c'est celui d'un include. Les includes sont numérotés à la suite d'apparition dans les lignes du programme"+chr$(34) item_add 2," print "+chr$(34)+"le numéro après les deux points, est celui de la ligne du programme include. Le nom de l'include apparait en bas à gauche."+chr$(34) item_add 2," print "+chr$(34)+"pour pouvoir arréter le programme avec STOP dans une boucle, il faut que la fin de la boucle soit sur une autre ligne. Ainsi:"+chr$(34) item_add 2," print "+chr$(34)+"> for a%=1 to 10000: instructions :next a% < ne sera pas intercepté, alors que:"+chr$(34) item_add 2," print "+chr$(34)+"for a%=1 to 10000"+chr$(34)+":print "+chr$(34)+"next a%"+chr$(34)+":print "+chr$(34)+"cette boucle pourra être intercepté. Pensez-y pendant la conception du code"+chr$(34) item_add 2," print "+chr$(34)+"de plus, si le curseur est à zéro, il n'y a pas d'interception. L'éxécution se continu. Donc dans ce cas déplacer le curseur sur la droite du trait pour ravoir le contrôle."+chr$(34) item_add 2," print_target_is 0" item_add 2," ' __FORM voir les variables '" item_add 2," form objeTron%+10:width objeTron%+10,400:height objeTron%+10,150:top objeTron%+10,screen_y - 300 : border_small objeTron%+10" item_add 2," list objeTron%+ 9:parent objeTron%+9,objeTron%+10 : width objeTron%+9,width(objeTron%)-50 : height objeTron%,150:full_space objeTron%+9" item_add 2," font_size objeTron%+9,12 : font_bold objeTron%+9 : font_color objeTron%+9,255,0,0:caption objeTron%+10,"+chr$(34)+"AVANT >Space<" item_add 2," dlist objeTron%+12:file_load objeTron%+12,"+chr$(34)+dossier_tron$+"debug.bas"+chr$(34)+" : ' pour pouvoir lire les lignes du fichier'" item_add 2," q%=-1 : mark_on objeTron%+3 : on_click objeTron%+3,q5 : on_click objeTron%+4,q5 : on_click objeTron%+5,q5" item_add 2," on_click objeTron%+8,q_fin : on_click objeTron%+7,q6 : show objeTron%+7 " item_add 2," command_target_is 0 " item_add 2," dlist objeTron%+13:file_load objeTron%+13,"+chr$(34)+dossier_tron$+"list_include.txt"+ chr$(34)+" : ' liste des includes" item_add 2,"' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" ' maintenant j'y inclus la partie numérotées for a%=1 to count (1) a$=item_read$(1,a%) if trim$(a$)="q:" then b%=0 :' on ne liste pas la partie trace if b%=1 if trim$(a$)="" item_add 2,a$ if flag_include%=0 d%=d%+1 else c%=c%+1 end_if else if left$(a$,3)="' #" include%=include%+1:flag_include%=1:c%=1 : d%=d%+1 :' il y a un écart de ligne avec include' item_add 2,"q$="+chr$(34) +str$(a%)+chr$(1)+str$(d%-1)+chr$(34)+":gosub q:"+a$ else if flag_include%=0 item_add 2,"q$="+chr$(34) +str$(a%)+chr$(1)+str$(d%)+chr$(34)+":gosub q:"+a$ d%=d%+1 else item_add 2,"q$="+chr$(34) +str$(a%)+chr$(1)+"#"+str$(include%)+":"+str$(c%)+chr$(34)+":gosub q:"+a$ c%=c%+1 if instr(a$,"' ==== FIN du programme #INCLUDE dépilé: ")>0 then flag_include%=0 end_if end_if end_if else item_add 2,a$ d%=d%+1 end_if if a%=4 then b%=1 next a% item_add 2,"" item_add 2,"end :' pour le cas où il n'en aurait pas" ' je fais une procédure de sélection des variables à montrer ' --------------------ici mise en place des variables à montrer rem "rajoute variables"
item_add 2,"q_variable:" item_add 2,"select q_variable%" :b%=1 for a%=1 to count(100) a$=item_read$(100,a%) if right$(a$,1) <>")" if right$(a$,1)="$" item_add 2," case "+str$(b%)+" : item_add objeTron%+9,"+ chr$(34) +" "+ trim$(a$) + " = " + chr$(34) + "+" + a$ else item_add 2," case "+str$(b%)+" : item_add objeTron%+9,"+ chr$(34)+" "+ trim$(a$) + " = " + chr$(34) + "+ str$("+a$+")" end_if b%=b%+1 end_if next a% item_add 2,"end_select" item_add 2,"return" ' je rajoute la mise mémoire de la liste des variables item_add 2,"liste_variable:":item_add 2," dlist objeTron%+11" for a%=1 to count(100) if right$(item_read$(100,a%),1 ) <>")" item_add 2," item_add objeTron%+11,"+chr$(34)+item_read$(100,a%)+chr$(34) end_if next a% item_add 2,"Return" ' maintenant je dois incruster les procédures traces mise au départ en texte rem "partie TRON"
item_add 2,"' ==============================================================================" item_add 2,"' ==============procédure TRON TRACE============================================" item_add 2,"q:" item_add 2,"' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" item_add 2,"' _______CONTRÔLE__________'" item_add 2," if q_spin% <> position(objeTron%+6)" item_add 2," if position(objeTron%+6) <500" item_add 2," color objeTron%,255,204,255" item_add 2," if position(objeTron%+6) > 0 then position objeTron%+6,200" item_add 2," end_if" item_add 2," if position(objeTron%+6) =0 then color objeTron%,214,214,214" item_add 2," if position(objeTron%+6) >499 then color objeTron%,181,207,181" item_add 2," q_spin%=position(objeTron%+6)" item_add 2," end_if" item_add 2,"" item_add 2," if q_spin% = 0 then caption objeTron%+15,mid$(q$ ,instr(q$, chr$(1))+1, 5) :goto q_sort_controle : ' on évite tout '" item_add 2,"" item_add 2," ' affiche les variables après exécution de la ligne, pour voir les changements" item_add 2," if q_retour_variable%=-1 and count(objeTron%+9)> 0 and q_spin%>500" item_add 2," color objeTron%+9,255,255,0 :caption objeTron%+10,"+chr$(34)+"RETOUR >Ctrl Droit<"+chr$(34)+":hint objeTron%+9,"+chr$(34)+"cliquez sur Ctrl Droit pour continuer"+chr$(34)+"" item_add 2," gosub q6 : q_retour_variable%=0" item_add 2," repeat : until scancode=163 : wait 50:' Ctrl" item_add 2," color objeTron%+9,255,255,255" item_add 2," end_if" item_add 2,"" item_add 2," if instr(q$,"+chr$(34)+"#"+chr$(34)+") > 0 :' affiche le nom du programme #include" item_add 2," q%=instr(q$,"+chr$(34)+"#"+chr$(34)+") : q=instr(q$,"+chr$(34)+":"+chr$(34)+")" item_add 2," caption objeTron%+15,item_read$(objeTron%+13, val(mid$(q$,q%+1,q-q%-1)) )" item_add 2," else" item_add 2," caption objeTron%+15,"+chr$(34)+"programme"+chr$(34)+"" item_add 2," end_if" item_add 2,"" item_add 2," ' recherche de la ligne à afficher'" item_add 2," show objeTron%" item_add 2," for q_trace%=1 to count(objeTron%+12) : if instr(item_read$(objeTron%+12,q_trace%),q$)>0 then exit_for" item_add 2," next q_trace%" item_add 2," if q_trace%<=count(objeTron%+12) then q= q_trace%" item_add 2,"" item_add 2," if q>0 then q_trace$ = item_read$(objeTron%+12,q)" item_add 2," q_trace$ = mid$(q_trace$,instr(q_trace$,"+chr$(34)+"gosub q:"+chr$(34)+")+8,300 )" item_add 2," if instr(q$,"+chr$(34)+"#"+chr$(34)+") >0 then color objeTron%+14,255,0,0: else : color objeTron%+14,0,0,0" item_add 2,"" item_add 2," ' affichage du numéro de ligne et du listage de laligne'" item_add 2," text objeTron%+14,mid$(q$,instr( q$,chr$(1))+1,20)" item_add 2," text objeTron%+1, trim$(mid$( q_trace$ ,instr(q_trace$,chr$(1))+1,150)) :display" item_add 2," if objeTron%+6<500 then goto q_sort_controle" item_add 2,"" item_add 2," ' décision" item_add 2," if checked(objeTron%+7) = 0 then hide objeTron%+10 :' affichage des variables annulée" item_add 2," if scancode=13 then q%=-1: mark_on objeTron%+3 : repeat:until scancode=0" item_add 2," if checked(objeTron%+7)=1 then gosub q6 :' check variables'" item_add 2," if checked(objeTron%+3)=1 then q%=-1 :' option bloque'" item_add 2," if checked(objeTron%+4)=1 then q%=0 :' option continue'" item_add 2," if checked(objeTron%+5)=1 then q%=1 :' option boucle'" item_add 2," if clicked(objeTron%+8)=1 then goto q_fin :' button stop'" item_add 2," if clicked(objeTron%+9)=1 then gosub q6 :' list" item_add 2,"" item_add 2," if q%=-1 then gosub q2" item_add 2," if q%= 1 then gosub q4" item_add 2,"q_sort_controle:" item_add 2,"return" item_add 2,"' ==============================================================================" item_add 2,"q1:" item_add 2,"file_save 20,"+chr$(34)+"copier_texte.txt"+chr$(34)+"" item_add 2,"return" item_add 2,"q2:" item_add 2,"q%=-1" item_add 2," repeat" item_add 2," if clicked(objeTron%+8)=1 then goto q_fin" item_add 2," if clicked(objeTron%+9)=1 then gosub q6" item_add 2," if checked(objeTron%+5 )=0 and position(objeTron%+6) > 500 then wait position(objeTron%+6)-499" item_add 2," if clicked(objeTron%+8)=1 then goto q_fin" item_add 2," if clicked(objeTron%+9)=1 then gosub q6" item_add 2," until scancode =162 or scancode = 163 or scancode=27 or scancode=13" item_add 2," if scancode=13 then q%=0:mark_on objeTron%+4 :repeat:until scancode=0" item_add 2," if scancode = 27 then goto q_fin" item_add 2,"return" item_add 2,"q3:" item_add 2,"repeat" item_add 2," if clicked(objeTron%+8)=1 then goto q_fin" item_add 2," if clicked(objeTron%+9)=1 then gosub q6" item_add 2,"until scancode=0" item_add 2,"q%=0" item_add 2,"return" item_add 2,"q4:" item_add 2,"q%=1" item_add 2,"if instr(upper$(q_trace$),"+chr$(34)+"UNTIL"+chr$(34)+")>0 or instr(upper$(q_trace$),"+chr$(34)+"NEXT"+chr$(34)+")>0 or instr(upper$(q_trace$),"+chr$(34)+"END_WHILE"+chr$(34)+")>0" item_add 2," repeat" item_add 2," if clicked(objeTron%+8)=1 then goto q_fin" item_add 2," until scancode =162 or scancode = 163 or scancode=27" item_add 2," if clicked(objeTron%+9)=1 then gosub q6 :' variable'" item_add 2,"end_if" item_add 2,"return" item_add 2,"q5:" item_add 2," if checked(objeTron%+3)=1 then q%=-1" item_add 2," if checked(objeTron%+4)=1 then q%=0" item_add 2," if checked(objeTron%+5)=1 then q%=1" item_add 2,"return" item_add 2,"" item_add 2,"q6:" item_add 2,"' variable" item_add 2," clear objeTron%+9 :q_len%=0" item_add 2," for qd% = count(objeTron%+11) to 1 step -1" item_add 2," if instr(q_trace$,item_read$(objeTron% + 11, qd%))>0" item_add 2," q_variable%=qd% : gosub q_variable" item_add 2," q_b% = len( item_read$( objeTron%+9 , count( objeTron%+9 ) ))" item_add 2," if q_len% < q_b% then q_len% = q_b%" item_add 2," end_if" item_add 2," next qd%" item_add 2," if count(objeTron%+9)> 0" item_add 2," if q_retour_variable%=0 then caption objeTron%+10,"+chr$(34)+"AVANT >CTRL<"+chr$(34)+":hint objeTron%+9,"+chr$(34)+"cliquez sur CTRL pour continuer"+chr$(34)+"" item_add 2," show objeTron%+10 : show objeTron%+9" item_add 2," height objeTron%+10,count(objeTron%+9)*20 +35" item_add 2," top objeTron%+10,top (objeTron%)-height(objeTron%+9) - 26: sort objeTron%+9" item_add 2," width objeTron%+10 , q_len%*12 :full_space objeTron%+9" item_add 2," else" item_add 2," hide objeTron%+10" item_add 2," end_if" item_add 2," if q_retour_variable%=0 then wait 20" item_add 2," q_retour_variable%=-1" item_add 2,"return" item_add 2,"" item_add 2,"q_fin:" item_add 2," stop" file_save 2,dossier_tron$ + "debug.bas" : beep chain dossier_tron$ + "debug.bas" end
Tel qu'il est fais, si je ne me trompe pas, il faut faire un exécutable, et vous mettez un raccourcis dans la barre de tâche Le programme que vous voulez tester, vous faite <CTRL A> et <CTRL C>, pour copier le programme, cela a pour effet de mettre le programme dans le presse papier. Puis vous cliquez sur le raccourcis du débogueur. Si vous avez des images ou des fichiers à lire , il est nécessaire de mettre le chemin entre guillemets à la première ligne du programme comme et non entre parenthèses comme je l'ai indiqué ' mon programme "C:\TESTE" à la fin de la ligne
Vous pouvez écrire ce que vous voulez avant, le teste du chemin se fait à partir du guillemet.
Dernière édition par cosmos70 le Jeu 30 Déc 2010 - 13:59, édité 8 fois |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Ven 24 Déc 2010 - 20:55 | |
| MODE d'emploi: Ce programme permet de lire ligne par ligne celui que vous voulez tester. Si vous le désirez, vous pouvez savoir si une variable est sur la ligne à lire, en connaitre le contenu avant et après lecture de la ligne. voici la vue de départ en bas de l'écran: On peut bloquer, c'est à dire lire chaque ligne, la suivante venant après appui sur une touche <CTRL>. Si on laisee la touche appuyée, le défilement se fait plus ou moins vite, selon la position du curseur du SPIN Pour la démonstration, je me sers de la pendule à un euro dont j'ai mis le lien plus haut. Si je coche la case variable, les variables de la ligne sont affichée à chaque appui. Avant lecture de la ligne, on voit les variables au départ. et le résultat après lecture de la ligne. A noter::pour exécuter la ligne, lorsque que la fenêtre blanche est active, il faut appuyer sur <CTRL> gauche ou droite. Pour effacer la fenêtre jeune, il faut appuyer sur: <CTRL DROITE> Il est évident que si le coche variable n'est pas activé, on ne les vois pas. Si vous êtes sur une boucle comme for/next while/end_while ou repeat/until, on clique sur la case boucle. Il y a deux cas selon la façon du codage de la boucle. Si tout est mis sur une ligne, on sortira lorsque la boucle sera finie Si il y a plusieurs lignes, les lignes à l'intérieur des boucles ne seront pas montrées, mais à chaque fin de boucle (next, end_while, until) le programme s'arrète. Si vous cliquez sur continu, le programme ne s'arrète pas, à moins que la case variable soit cliquée. On peut aller plus vite en déplaçant le curseur à gauche du repère rouge. Là la couleur est modifiée. Jusqu'à lors, l'edit noir, indique le numéro de la ligne du programme --------------------- On peut aussi augmenter la vitesse, et avoir une vitesse rapide, en méttant le curseur, à zéro (à l'extrème gauche) Là la forme devient grise Pour gagner du temps d'exécution, le numéro de ligne est représenté en dessous, c'est un alpha. Ainsi, si une erreur se produit, il suffit de regarder le numéro affiché. Il est à noter qu'avec ce programme, len cas d'erreur, la ligne qui est donnée par le message, est fausse. C'est celle du programme recomposé, mais non de l'original, car c'est la ligne originale qui est affichée. POUR STOPPER UNE BOUCLE Ce programme peut stopper toutes les boucles. Mais pour celà il est nécessaire que la boucle se fasse sur plusieurs lignes. ainsi: for a%=1 to 10000: message a%:next a%: la boucle ne pourra pas être stoppée. Mais : for a%=1 to 10000:message a% next a% : en appuyant sur stop, on arrète le programme Je réédite ce post pour apporter une précision. Jack va proposer un mode trace pour Panoramic prochainement. Ayant déjà mis un code en ce sens, et dont je remarquais qu'il y avait des problèmes que je n'avais pas vu avant de publier, je suis obligé d'apporter des corrections sur mon programmes, il en vient de ma crédibilité. Je l'aurai su avant, je n'aurai pas publié ce programme. Mainenant ce que propose Jack , est en fait une complémentarité par rapport à mon programme. En raison du fait que je programme en Panoramic, j'ai du intervenir sur chaque programme à contrôler, pour que cela fonctionne. Ainsi, si par exemple vous avez mal placé une instruction dim, cette erreur ne sera pas visible, vu que je suis intervenu dans le programme, pour la mettre en première ligne. De plus ce programme aura certainement quelques soucis avec les timer, vu qu'en mode pas à pas, un timer interceptera les lignes du programme, et je ne pense pas qu'il y aura une suite cohérente. Par contre par rapport à ce qu'affiche Jack, le mode pas à pas qui peu montrer les variables est un plus, à savoir:. Lorsque j'ai pensé ce programme, rien ne pouvait me permettre que Jack accepterai de mettre un mode trace à Panoramic, et je ne suis pas coupable de vouloir surenchérir. Au contraire, même si j'avais fait ce programme, je ne l'aurai pas publié et gardé pour mon besoin personnel. Si vous jugez que mon programme est superflu, je suis d'accord pour le retirer. En attendant, je poursuivrai la publication des autres codes pour les autre éditeurs, ainsi que le programme qui chaine le programme à déboguer. Joyeux Noël!
Dernière édition par cosmos70 le Sam 25 Déc 2010 - 18:59, édité 2 fois |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Ven 24 Déc 2010 - 20:56 | |
| Pour l'éditeur PsPad, je mets ici le loader du programme. Il permet de faire le choix entre exécuter le programme, ou l'exécuter en mode trace. Il y a un code à rebours qui laisse le temps de lancer le débogueur. à zéro, l'exécution en mode normal se fait. Le focus étant sur le bouton éxécution, un appui sur la barre d'espace, un return, lance de suite le programme. - Code:
-
' lanceur de programme avec choix de débogage label debug,execution,teste,envoi ,fin : dim compte%:compte%=4
width 0,300:height 0,150:left 0,screen_x/2-150 :top 0,screen_y/2-100:font_size 0,18 button 1:top 1,20:left 1,50:width 1,170:caption 1,"exécution" button 2:top 2,60:left 2,50:width 2,170:caption 2,"mode TRACE":height 2,60 memo 3:hide 3:bar_horizontal 3 :font_size 3,8 clipboard_paste 3 if left$(item_read$(3,1),5)="Code:" then item_delete 1,1:' copie des codes du forum if left$(item_read$(3,2),5)="Code:" then item_delete 1,2:' copie des codes du forum alpha 4:left 4,230:top 4,20:caption 4,"4" timer 5:timer_interval 5,1000 :on_timer 5,teste timer_on 5 :set_focus 1:on_click 2,debug end debug: timer_off 5:delete 5 if dir_exists("c:\temp") = 0 then dir_make "C:\temp" file_save 3,"C:\temp\trace.bas" ' ****************************************************** ' rem "METTRE LE CHEMIN COMPLET DU PROGRAMME DÉBOGUEUR" execute "C:\DEBOGUEUR.exe" ' ****************************************************** ' goto fin return
' ------------------------------------- execution: TIMER_off 5:delete 5 compte%=1:goto envoi teste:
if clicked(1)=1 goto envoi end_if compte%=compte%-1:caption 4,compte% if compte%=0 then goto envoi return
envoi: if NUMBER_OBJECTS = 5 then timer_off 5:delete 5 rem "METTRE LE CHEMIN COMPLET DU PROGRAMME" file_save 3,"C:\temp\Panoramic.bas" chain "C:\temp\Panoramic.bas" return fin: terminate
Mettre le bon chemin du programme débogueur en ligne 20faire un exécutable et le placer dans C:\Program Files\PSPad editor\Script en suivant les indications de Nardo26 - Citation :
-
modifié 25/12/10 à 18.48h rajouté 2 lignes oubliées, pour enlever le mot "code:" lors de la copie à partir du forum modifié de nouveau le 27/12/2010 à 0.00 h
loader qui execute directement le programme pour Panoramic La version du débogueur pour PsPad, je l’annule à cause des problème avec Chain Finalement cela simplifie les choses dans la maintenance, et ne change rien au fonctionnement Il faut mettre le chemin du programme à la ligne 20, en dessous des "*******". Pour ma part j'ai placé directement dans le lecteur C (je parle du débogueur et non du lanceur)
Dernière édition par cosmos70 le Lun 27 Déc 2010 - 0:03, édité 5 fois |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Ven 24 Déc 2010 - 20:57 | |
| version du débogueur pour éditeur PsPad.
[strike]
Il me semble que la version pour l'éditeur Panoramic fonctionne maintenant pour PsPad, après toutes les modifications qui ont étés faite, mais je préfère mettre cette version ici, je sais qu'elle fonctionne avec PsPad Editor
J'ai fait ma B.A., maintenant c'est à vous. Mais si il y a des problèmes, je préfère le savoir maintenant que je suis dans le programme. Ceci nécessite la réflexion sur 3 programmes: trace.bas, debug.bas, et ce programme.
Une chose qui concerne les deux versions: Les variables qui sont montrées dans les fenêtres, lors du mode trace, ont une succincte sur le nom de celles-ci, et il peut y en avoir davantage, lorsque le nom d'une variable se trouve dans une autre, comme a$ et ba$. Tous les testes que j'ai fait ne montrent pas beaucoup plus de variables et cela me semble acceptable.
Nota: en fonctionnement avec un lanceur, il n'est pas nécessaire de faire un exécutable de ce programme, vu que le lanceur (loader) a le chemin de celui-ci, et qu'il exécutera directement le fichier bas de ce programme.
Annulé. remplacé par celui de Panoramic, mais avec un loader modifié qui se trouve plus bas
Dernière édition par cosmos70 le Lun 27 Déc 2010 - 0:06, édité 1 fois |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Sam 25 Déc 2010 - 10:36 | |
| Normalement tout a été fait. J'ai apporté quelques petites corrections depuis hier soir, pour être en accord avec les explications et selon la version. Cela doit être opérationnel. 264 |
| | | Contenu sponsorisé
| Sujet: Re: Mode TRACE pour Panoramic | |
| |
| | | | Mode TRACE pour Panoramic | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |