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: Re: Mode TRACE pour Panoramic Sam 25 Déc 2010 - 19:36 | |
| N'ayant pas de retour sur le programme, j'ai du recopier depuis le forum qui correspond à l'éditeur Panoramic pour vérifier que cela fonctionnait bien. J'ai vu qu'il y avait un problème. Dommage que personne ne signale rien.
Ayant plusieurs versions, pour la mise au point, je n'ai pas pris la bonne. Ne travaillant plus avec l'éditeur Panoramic je ne l'ai pas vu tout de suite. Une partie du travail est déjà fait par le chargeur que j'utilise avec PsPad. Je vais donc apporter les modifications nécessaires. |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Dim 26 Déc 2010 - 9:22 | |
| J'ai enfin compris ce qui se passait. Il y a des lignes de programme qui ont sautées, et je ne sais pas comment. De plus j'ai utilisé pour les testes, des petits programmes (pour les includes) et j'ai des fichiers ayant le même nom pour faire les testes avec un chemin différent. Le programme recomposé n'avait pas le bon chemin, et j'ai eu du mal avec tous ces mélanges de comprendre. Apparemment cela marche, mais j'ai besoin de voir si vraiment tout est ok, avant de remettre une version finale. 300 |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Dim 26 Déc 2010 - 11:26 | |
| D'après mes testes, la version de Panoramic est au point, et je viens de la mettre en ligne. C'est la version qui se trouve avant le mode d'emploi. Seul bémol que j'ai trouvé dans les testes, c'est un problème avec scancode, mais cela ne vient pas du débogueur.
Maintenant c'est à vous de me dire si cela marche chez vous. 313
Dernière édition par cosmos70 le Lun 27 Déc 2010 - 13:07, édité 1 fois |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Dim 26 Déc 2010 - 23:26 | |
| Cela me gène de relancer le post, mais malgré le nombre de visite, je n'ai aucune réaction. Il m'importe peu de savoir que ce programme vous plaise ou non, chacun est libre de son opinion. Le problème est si cela ne fonctionne pas chez vous, alors que cela fonctionne chez moi (je parle de la version pour l'éditeur Panoramic), j'aimerai le savoir maintenant, pendant que je m'y retrouve. Ayant l'environnement qui convient maintenant sur mon ordi, il est pas toujours vrai, que le programme fonctionne, alors que cela n'a pas été fait sur le votre. Je vais passer à autre chose. Après je ne suis pas sûr d'y revenir. |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Lun 27 Déc 2010 - 0:11 | |
| mise au point pour PsPad terminé. C'est devenu le programme pour l'éditeur Panoramic. Le fonctionnement est le même, seule la méthode diffère. Le loader a une fonction execute sur le programme, ce qui simplifie les choses. Pour ma part, j'ai placé le débogueur (mot affreux) directement à la racine de C, et il faut bien mettre le chemin dans le loader à la ligne 20, pour la commande exécute. |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Lun 27 Déc 2010 - 19:28 | |
| Bonsoir cosmos, J'ai pas encore tout pigé concernant l'utilisation du debugger (je regarde le Pdf que tu as fait) Donc rien de tel que de le lancer et vaille que vaille comme on dit Finalement, pour tester ton debugger, qu'elle version de ScriptPanoramic.js tu utilises ? La version de base qui est sur mon site ou une version que tu as modifié?... PS: au passage, j'ai modifié sur mon site, le formulaire de saisie de commentaires, normalement on ne devrait plus avoir de problème avec les caractères spéciaux... | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Lun 27 Déc 2010 - 21:10 | |
| Bonsoir Nardo, Le programme que j'utilise, n'est plus celui du zip., mais la version que j'ai mis pour Panoramic.
Le loader est celui que j'ai mis plus haut. Dans celui-ci, il faut indiquer le chemin (et le nom) du debogueur en fichier .exe (personnellement je l'ai placé directement à la racine du C
C'est tout ce qu'il y a à faire. Lorsque tu cliques (pour toi: shift+F9) tu choisis le bouton mode TRACE, pour suivre les lignes du programme, ou exécution pour un fonctionnement normal.
Les modifications que je t'avais demandées concernent le loader complexe que j'ai fait, et dont j'ai un problème avec. Mais celui qui est sur le post plus haut, ne doit pas poser de problème
'----------------------------------' en mode trace, ce sont les touches CTRL gauche ou droite qui ont étés choisis. Shift, si il y a 5 clics, on a un message pour les paramètres visuels, donc embétant. La touche espace a le problème qu'elle valide les boites messages, donc j'ai pris les touches contrôles.
Tu fais d'abord un essai comme cela, et si il faut, je commenterais. @+ |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Lun 27 Déc 2010 - 21:33 | |
| Ok Merci Cosmos, Je jetterai un coup d'oeil demain, j'ai pas trop le tps ce soir.... A+ | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mar 28 Déc 2010 - 13:15 | |
| Le programme "débogueur" vient de nouveau être modifié. J'ai modifié pour les includes. On ne pouvait que faire un include de niveau 1 Maintenant un include peut en importer un autre. De plus lorsque qu'on a des fichiers à lire, qui sont dans le même chemin, comme des images par exemple, il y avait une erreur. Cette erreur, je ne l'ai pas vérifié encore, mais je vais le faire, est peut-être le problème que j'ai rencontré lors de la lecture d'un memo, et qui n'avait pas de correspondance. En première ligne, pour bien imposer le chemin, il faut mettre entre guillemet le nom du chemin complet. J'ai fais en sorte que l'on puisse par exemple avoir un programme comme: C:\TESTE\essai.bas pouvoir mettre "C:\TESTE\essai.bas" "C:\TESTE\" ou "C:\TESTE" Le programme rectifie en "C:\TESTE\" Pour faire des essais avec des includes, et voir le résultat, voici 3 petits programmes: - Code:
-
' programme d'essai Panoramic "C:\TESTE\M_au _P_TRACE" ' **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 "C:\TESTE\inclusion.bas" for a%=1 to 10 item_add 1,str$(a%) next a% end
branche: message "click sur le memo" return C'est celui-ci qu'il faut lancer avec le débogueur. Les deux autres (évidemment il faudra mettre les chemins correspondant dans les appels à #include) - Code:
-
rem "ceci est un essai d'inclusion dans un autre programme" #include "C:\TESTE\surface.bas" message "appel include surface, et surface%="+str$(surface%)
et - Code:
-
' Panoramic C:\TESTE\PROCEDURE\surface.bas dim long%,larg%,surface% ' préfice suplémentaire Surface long%=125:larg%=100
message "long%="+str$(long%)+" larg%="+ str$(larg%) surface%=long% * larg%
441 |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mar 28 Déc 2010 - 13:33 | |
| Je viens de remodifier le programme. Les caractères "\" sautaient dans le listing, et je viens de les remplacer par chr$(92). Ayant repris le programme depuis le forum, je comprend pourquoi, j'avais des problèmes. 446 |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mar 28 Déc 2010 - 19:04 | |
| J'ai actuellement 8 onglets d'ouvert pour ce programme. Vu que personne ne donne suite, je suppose que le programme fonctionne. Donc demain matin, si il n'y a pas de réponse, je pourrais enfin remettre tout à zéro pour partir sur autre chose. Si il y a un problème, dîtes le moi maintenant que je puisse faire ce qu'il faut et avoir l'esprit tranquille. Merci de votre compréhension.
|
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Mar 28 Déc 2010 - 19:49 | |
| Bonsoir cosmos ! Juste en coup de vent : Désolé mais obligations familiale oblige, je ne peux pas pour l'instant tester ton programme Dès que la maison sera redevenue un peu plus calme je me replonge dans ton debugger ! Ça m'intéresse !! Ya vraiment personne qui peut donner un coup de main à Cosmos ? C'est vrai, qu'il est un peu seul depuis quelques temps... A+ | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mar 28 Déc 2010 - 23:31 | |
| Merci Nardo sur le post du 26 décembre à 9.22 H, j'ai mis un nombre en bas du post pour voir comment les choses évoluaient avec les Panoramiciens. C'est celui qui correspondait aux nombres de visite sur le post. Il suffit de voir la différence, pour avoir envie de se poser des questions sur le partage des membres de ce forum.
Certains d'entre vous peuvent penser que je suis pas assez intelligent pour comprendre. Tout le monde n'est pas disponible, et moi le premier, et même je ne suis pas preneur sur tout, mais la différence entre ce qui a été lu et les interventions, c'est à dire rien à part celle de Nardo, montre que le partage entre Panoramicien n'est pas égal.
Je pense que c'est le dernier projet que je mets en ligne. Vous n'êtes pas aimables. Ne me donnez pas d'excuses, elles seront inventées.
Il y a plusieurs jour que la version chez moi fonctionnait, mais c'est avec le forum que j'avais un problème pour le programme. Je suis bloquait dessus, sans rien savoir de ce que cela donne. Je pense qu'on a été au bout des choses.
Joyeuses années 2011 |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Jeu 30 Déc 2010 - 12:57 | |
| J'ai du apporter une modification au programme qui concerne le débogueur, que vous trouverez dans version pour éditeur Panoramic Toujours le même problème, une ligne avec "\" que je n'avais pas modifié en chr$(92), pour passer la barrière du forum, qui supprime ce caractère. |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Mer 5 Jan 2011 - 21:58 | |
| Ok cosmos, me voici de retour ! Je vais enfin pouvoir me pencher sur ton debugger... Je te tiens au courant ! | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mer 19 Jan 2011 - 19:55 | |
| Bonsoir,
En voyant le commentaire de Nardo sur mon débogueur sur un post parallèle, j'ai un problème avec. Ce n'est pas une question d'erreur, ou de programmation. Je n'ouvre pas de sujet spécifique, à moins qu'on soit d'accord pour en parler, mais (je le savais dès le départ), cela concerne les timers.
Mon débogueur est détourné par les timer. Pour suivre un ensemble de lignes, il me manque une instruction: celle qui arrête tous les timers, et une qui les remette tel qu'ils étaient avant. Il m'est difficile de mettre timer_off, et de le remettre à ON, vu que je n'ai pas d'instruction qui me dit si un timer est déjà bloqué ou pas. Je pense que c'est un manque à Panoramic.
|
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Mer 19 Jan 2011 - 20:13 | |
| J'ai bien peur que les timers soient un pb insoluble... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mode TRACE pour Panoramic Mer 19 Jan 2011 - 20:27 | |
| Pas si Jack ajoute des commandes du type GLOBAL_TIMER_OFF : ' désactive tous les timers GLOBAL_TIMER_ON : ' réactive tous les timers actifs avant GLOBAL_TIMER_OFF
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mode TRACE pour Panoramic Mer 19 Jan 2011 - 21:38 | |
| Je dis peut-être une bêtise, mais si on parle de désactiver ou réactiver TOUS les Timers, on peut bien simuler le global_timer on ou off avec une petite boucle, si on regroupe les numéros des timers: - Code:
-
for i% = t1 to tn timer_on i% next i% et de même - Code:
-
for i% = t1 to tn timer_off i% next i% On n'a pas à se soucier si un timer est actif ou non, ça marche dans la mesure où Panoramic ne fait pas d'erreur si on fait timer_on sur un timer déjà actif, ou timer_off sur un timer déjà désactivé. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Mode TRACE pour Panoramic Mer 19 Jan 2011 - 21:50 | |
| Je ne parle pas d'un GLOBAL_TIMER_XXX mais du fait de debugger du code en pas à pas... alors que l'applic que l'on débug est sensée fonctionner avec des timer actifs... ça fausse tout...
| |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Mer 19 Jan 2011 - 22:23 | |
| JL35. Le débogueur est sensé regarder un programme quelconque, et pas seulement que les miens. Il me parait difficile de savoir si un programme a un, ou des tas de timer. Tel timer peut être actif pour une partie de programme, et tel autre pour un autre. Je me vois mal de faire un tableau pour savoir à quel moment lorsque timer_on ou timer_off intervient, je vais modifier le flag correspondant. Surtout si en plus il y a des testes. Ce n'est pas le but de mon débogueur. Il est sensé montrer la ligne au moment où le programme la parcourt, et éventuellement montrer le contenu des variables de la ligne. Pas de modifier le programme. Déjà que je suis intervenu pour mettre les variables en remarques, et les rassembler en début de programme, pour que mon débogueur puisse avoir la liste de celles-ci et être déclarées au moment où elles sont lues. Ce programme a été commencé dans cette version vers juin ou juillet. Il a été ensuite repris plusieurs mois après le plantage de l’Éditeur Panoramic, et j'avais perdu une grosse partie. Il a des reste de cette version que je n'ai pas modifié. Si vous voyez le code généré par le débogueur, vous verrez des lignes du genre: - Citation :
- q$="726|722":gosub q
et bien la première série de nombre ne sert à rien. Celà faisait partie de la première version, et j'ai pas eu le courage de les enlever en modifiant le programme. A la reprise du programme j'ai fait autrement. Aujourd'hui avec les nouvelles instructions: variable() et label(), peut-être qu'il m'aurait été possible d'éviter de détourner les déclarations de variables. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mode TRACE pour Panoramic Mer 19 Jan 2011 - 22:35 | |
| Ah pardon, j'avoue que je n'ai pas lu tout le topic et je ne voyais pas ça sous l'angle du deboggage, là ça change tout. | |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Ven 21 Jan 2011 - 11:48 | |
| Je viens d'apporter une amélioration de mon débogueur J'ai rajouté un compteur: celui-ci s'incrémente à chaque lecture de ligne. Attention, si il y a plusieurs instructions sur la même ligne, cela ne compte que pour un. Mine de rien, ce compteur, que j'utilisais dans la 1ère version (autre que ce post) ma fais changer ma méthode de programmation. Ainsi pour un programme donné sur l'affichage d'une page de texte, à mes tout début, le compteur allait jusqu'à si je me souviens bien, 70000 lignes pour initialiser et afficher une page. Lorsque j'ai repris le même type de programme, je suis descendu à moins de 5000. Ensuite j'ai rajouté 2 instructions directes: mark_on trace et mark_off trace Ce sont des commandes basic, Il s'agit en fait d'un check invisible qui est initialisé à 9971, donc check 9971, objet à ne pas utiliser, ainsi que la variable trace Ainsi si vous incluez à la première ligne de votre programme: mark_off trace , vous avez l'écran du bas en gris. si vous incluez mark_on trace vous avez l'écran vert, et vous êtes en mode pas à pas. il est évident que cela ne fonctionne qu'avec le debogueur, sinon vous aurez une erreur Il est toujours possible de mettre une ligne de ce type en début de programme: dim trace:trace=9971:check trace:hide trace: 9971 est le numéro du check, mais si le numéro n'est pas un numéro d'objet c'est aussi valable. Ainsi pour ne pas se servir du débogueur provisoirement, cette ligne évite l'erreur, et pour se servir du débogueur, il suffit de la mettre en commentaire Je viens d'apporter une modification. Au départ le programme est initialiser à OFF, donc on a l'écran gris. Ensuite le mode pas à pas se fait en déplaçant le curseur vers la droite, ou en incluant mark_on trace. |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Ven 21 Jan 2011 - 11:51 | |
| Je poste cette version ici, cela évitera de chercher dans toutes les pages. mais l'aide est toujours la même. - Code:
-
' Panoramic DEBOGAGE *** Auteur Cosmos70 *** ' modifié le 22 avril 2011 IL VOUS APPARTIENDRA DE MODIFIER LE CHEMIN LIGNE: 188 ' A vous de voir si vous préférez enregistrer dans C:\temp\trace.bas, ou copier le programme et le lancer ' à partir du programme compilé. Si vous exécutez à partir de l'éditeur, la fonction CHAIN laisse ' l'éclair en gris. VOIR les lignes 14 et 15 pour le choix 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:width 5,1500: ' obligé de passer par un memo pour copier le presse papier dlist 3 ' file_load 5,"C:\temp\trace.bas" :hide 5 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$<>"" and instr(b$,"(")=0 then item_add 100,b$ d$=trim$(right$(d$,len(d$)-b%)) if instr(d$,"(")< instr(d$,",") then d$=mid$(d$,instr(d$,")")+1,900):if left$(d$,1)="," then d$=mid$(d$,2,900) else b$=d$ if instr(b$,"(")=0 then 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,trace:objeTron%=9950:trace=objeTron%+22" item_add 2," label q2 , q3 , q4 , q5 , q6 ,q7, 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%, resss%,q_count%,q_tron%,q_fin% " 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%,214,214,214:command_target_is objeTron%" item_add 2,"dll_on " + chr$(34) + "KGF.dll"+chr$(34) item_add 2," resss% = dll_call2("+chr$(34)+"WindowTopMost"+chr$(34)+",handle( objeTron% ),1):dll_off " 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,380: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%)-430:position objeTron%+6,0" item_add 2," button objeTron%+21:left objeTron%+21,335:width objeTron%+21,40:caption objeTron%+21,"+chr$(34)+"T/V"+chr$(34)+":height objeTron%+21,20" 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,40: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:hide 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:hide 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,"' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" item_add 2," check trace:hide trace:mark_off trace:q_tron%=0 " ' 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 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 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 item_read$(100,a%)<>"" if right$(item_read$(100,a%),1 ) <>")" item_add 2," item_add objeTron%+11,"+chr$(34)+item_read$(100,a%)+chr$(34) end_if 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_tron%<>checked(trace)" item_add 2," q_tron%=checked(trace) " item_add 2," if q_tron%=1 then position objeTron%+6,700:else:position objeTron%+6,0" item_add 2," end_if" 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,"q_count%=q_count%+1" item_add 2," if position(objeTron%+6)=0 then caption objeTron%+15,mid$(q$ ,instr(q$, chr$(1))+1, 5)+" +chr$(34)+" compteur:" +chr$(34)+"+str$(q_count%):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)) )"+chr$(34)+" compteur:" +chr$(34)+"+str$(q_count%)" item_add 2," else" item_add 2," caption objeTron%+15,"+chr$(34)+"programme - compteur:" +chr$(34)+"+str$(q_count%)" 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," if clicked(objeTron%+21)=1 then gosub q7 :' list entier" 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,"q7:" item_add 2,"clear objeTron%+9:q_len%=0" item_add 2," for qd% = count(objeTron%+11) to 1 step -1" 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," 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,0: 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," q_fin%=MESSAGE_CONFIRMATION_YES_NO("+chr$(34)+"OUI: on arrête , NON: on stop ,TRAPCLOSE: annulation"+chr$(34)+")" item_add 2," if q_fin%=1 then terminate " item_add 2," if q_fin%=2 then stop" item_add 2," if q_fin%=0 then return" file_save 2,dossier_tron$ + "debug.bas" : beep chain dossier_tron$ + "debug.bas" end
modifier le 22 avril pour résoudre le problème des tableaux à plusieurs indicesSi vous constatez d'autres erreurs, SVP, dites le avant que le sujet soit bloqué, et aussi, parce que j'ai beaucoup de mal de programmer ces derniers temps. Trop de travail en dehors.
Dernière édition par cosmos70 le Ven 22 Avr 2011 - 1:16, édité 2 fois |
| | | Invité Invité
| Sujet: Re: Mode TRACE pour Panoramic Sam 12 Fév 2011 - 12:35 | |
| Je le fais cette fois, mais je pense que tout le monde le comprend:
Pour bénéficier des nouvelles fonctions de la version instantanée d'aujourd'hui, il est nécessaire de refaire l'exécutable de ce programme avec cette version.
Ce sera nécessaire pour chaque nouvelle version, pour intégrer les perfectionnements. C'est aussi le cas pour tel ou tel loader des autre éditeurs que Panoramic. |
| | | 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
| |
| |
| |