FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Mode TRACE pour Panoramic Emptypar Marc Aujourd'hui à 16:16

» Gestion d'un système client-serveur.
Mode TRACE pour Panoramic Emptypar Klaus Aujourd'hui à 14:52

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Mode TRACE pour Panoramic Emptypar Froggy One Aujourd'hui à 9:16

» @Jack
Mode TRACE pour Panoramic Emptypar Jack Mar 30 Avr 2024 - 18:40

» trop de fichiers en cours
Mode TRACE pour Panoramic Emptypar papydall Lun 29 Avr 2024 - 21:39

» Une calculatrice en une ligne de programme
Mode TRACE pour Panoramic Emptypar jean_debord Dim 28 Avr 2024 - 6:47

» Form(résolu)
Mode TRACE pour Panoramic Emptypar leclode Sam 27 Avr 2024 - 15:59

» Bataille navale SM
Mode TRACE pour Panoramic Emptypar jjn4 Ven 26 Avr 2024 - 15:39

» Les maths du crocodile
Mode TRACE pour Panoramic Emptypar jean_debord Jeu 25 Avr 2024 - 8:37

» Naissance de Crocodile Basic
Mode TRACE pour Panoramic Emptypar jean_debord Jeu 25 Avr 2024 - 6:45

» Dessine-moi une galaxie
Mode TRACE pour Panoramic Emptypar jjn4 Lun 22 Avr 2024 - 11:47

» Erreur END_SUB
Mode TRACE pour Panoramic Emptypar jjn4 Lun 22 Avr 2024 - 11:43

» Bug sur DIM_LOCAL ?
Mode TRACE pour Panoramic Emptypar papydall Dim 21 Avr 2024 - 21:30

» 2D_fill_color(résolu)
Mode TRACE pour Panoramic Emptypar leclode Sam 20 Avr 2024 - 6:32

» Consommation gaz électricité
Mode TRACE pour Panoramic Emptypar leclode Mer 17 Avr 2024 - 9:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

 

 Mode TRACE pour Panoramic

Aller en bas 
+2
Jean Claude
Nardo26
6 participants
Aller à la page : 1, 2, 3  Suivant
AuteurMessage
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 12: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.7z

Edit, 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 - 14:48, édité 6 fois
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 19:14

Oui ?....
Ton prog de traçage est des plus succinct...
Bel performance au niveau optimisation !!!
lol!
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 19:21

C'est l'épuisement,

Voilà un code qui est à ma portée.........

Mode TRACE pour Panoramic Gif_anime_chats_254

Razz


Je me suis bien fait avoir, le temps que j'envoi et hop Cosmos à rectifié.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 19:24

J'imagine que c'est "DEBOGUEUR.bas" qui est le programme principal ? mais pas encore essayé...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 19: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+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 19: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
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 19: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
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 21: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.
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyMer 17 Nov 2010 - 22: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.
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 5: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?
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 7:30

bonjour,
Quand j'ai posté ce message, il n'y avait qu'un seul caractère dans ton post : "."
Smile
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 9: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.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12281
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 9: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.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 9: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.... Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 11: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?
Revenir en haut Aller en bas
dragonno




Nombre de messages : 341
Localisation : Près de Toulouse
Date d'inscription : 22/01/2009

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 15: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 Wink
Un programme est toujours utile à quelqu'un, et le proposer dans cette éventualité c'est déjà pas mal et très sympa aussi Wink
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 Wink
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 Wink
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12281
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 15:37

Je suis entièrement de ton avis, dragonno, et je poste mes logiciels dans cet esprit !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 16: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.
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 21:43

Je viens d'invalider le lien, j'ai trouvé une erreur, et étant sur deux programmes à la fois, cela peut prendre plusieurs jours.
Revenir en haut Aller en bas
dragonno




Nombre de messages : 341
Localisation : Près de Toulouse
Date d'inscription : 22/01/2009

Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 20 Nov 2010 - 21: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 Wink

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 Wink
D'où mon post Wink

(Tiens bizarre, mon avis s'écrit avec un "s" alors que c'est "mon"....)
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyVen 24 Déc 2010 - 19:54

J'ai repris le programme.
version pour éditeur Panoramic
derniè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-euro
Je 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 - 12:59, édité 8 fois
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyVen 24 Déc 2010 - 19: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:
Mode TRACE pour Panoramic 76416769
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.
Mode TRACE pour Panoramic 33295875
Avant lecture de la ligne, on voit les variables au départ.
Mode TRACE pour Panoramic 75883506
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.
Mode TRACE pour Panoramic 52400775

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
Mode TRACE pour Panoramic 96670343
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 - 17:59, édité 2 fois
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyVen 24 Déc 2010 - 19: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.
Mode TRACE pour Panoramic 95386568
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 20
faire 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 Dim 26 Déc 2010 - 23:03, édité 5 fois
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptyVen 24 Déc 2010 - 19: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 Dim 26 Déc 2010 - 23:06, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité




Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic EmptySam 25 Déc 2010 - 9: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
Revenir en haut Aller en bas
Contenu sponsorisé





Mode TRACE pour Panoramic Empty
MessageSujet: Re: Mode TRACE pour Panoramic   Mode TRACE pour Panoramic Empty

Revenir en haut Aller en bas
 
Mode TRACE pour Panoramic
Revenir en haut 
Page 1 sur 3Aller à la page : 1, 2, 3  Suivant
 Sujets similaires
-
» Mode TRACE
» Le mode TRACE
» mode TRACE
» Mode TRACE
» Une trace paramétrable en 100 % Panoramic

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: