FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Gestionnaire de Projets Panoramic
par Minibug Aujourd'hui à 2:10

» Mah-Jong européen new-look
par jjn4 Hier à 16:35

» Button_picture
par pascal10000 Hier à 11:41

» Pourquoi le compilateur stagne
par Minibug Hier à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Hier à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Hier à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Hier à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Mer 13 Déc 2017 - 17:27

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Débogueur reporté sur une autre fenêtre.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2, 3, 4  Suivant
AuteurMessage
Invité
Invité



MessageSujet: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 2:53

Bonsoir,
suite à l'annonce: http://panoramic.free-boards.net/t4932-quesrtion-posee-pour-un-debogueur#60319

Voir les derniers posts. Codes modifiés


.


Dernière édition par cosmos70 le Mar 18 Oct 2016 - 23:59, édité 4 fois
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 3:28

Programmes revus, voir les dernieres pages


Dernière édition par cosmos70 le Mer 19 Oct 2016 - 0:01, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 3:49

Sad  J'ai oublié de préciser:
Il faut enregistrer votre programme avant de le lancer. Je ne peux que lire des fichiers, et non le contenu des onglets de panoramic_editor!
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 10:46

Bonjour.
Déjà je regarde le titre que j'ai mis Evil or Very Mad l faudra que je trouve mieux!

Ce programme je l'ai conçu pour moi, et tout d'un coup je constate qu'en utilisant kgf.dll, j'ai oublié de penser que celui-ci peut se trouver ailleurs. Là j'ai pas de solution. Et vous?
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 11:13

Bonjour Cosmos70,

Je viens de regarder rapidement le cheminement pour la mise en place de ton outil.
Çà ne semble pas trop compliqué en suivant les instructions. Wink

Je regarderai plus en détail cette après midi.
En tous cas merci pour toutes ces infos et cet outil qui va avoir son utilité, c'est sûr...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 13:17

Bonne chance Minibug. Il ne devrait pas y avoir de problème normalement.

Envisageable de changer de mot-clé, ou alors voir pour les retirer dans le programme execute.bas. µµµµCeux-ci laisse des traces sur la form 0.
Il y a REM !var= ...,
ou choisir une variable dédiée, mais cela pose problème si celle-ci entre dans son propre programme, comme: z$="!tron_on"

J'ai pas pris rem, car j'enlève les remarques lors du parser pour lire les variables, mais il me semble que les commandes passées sont lues avant. Je regarderai je pense ce soir.

J'ai pris PRINT"! car cela est utilisé dans d'autres basic pour faire des commandes. Exemple: dans JustBasic, la majorité se font ainsi: print "!cls", print "!copy" print "!origin?" ...
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 14:20

J'ai eu le temps de faire une mise à jour. Les mots clés n'apparaissent plus dans la fenêtre.
En réalité c'était tout simple.

Reste à savoir si les mots-clés utilisés vous conviennent.
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 18 Sep 2016 - 21:20

Désolé Cosmos, je n'ai pas eu le temps de regarder ton programme cet après midi.
J'ai juste préparer la première partie, je vais tenter de m'y mettre dans la semaine...

Je te tiens au courant et encore merci pour toutes les infos. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Lun 19 Sep 2016 - 9:55

Merci. Je ne m'inquiète pas, même si personne ne donne son avis.

En réalité en me servant de cet outils pour mon propre programme, j'ai constaté un bug (pas méchant: le n° de ligne indiqué n'est pas le bon). Pour l'instant je n'ai pas mis de correction, car tant que personne n'intervient, j'apporte des modifications et j'ai pas toujours le temps de venir sur le forum, et modifier tel programme. D'ailleurs je pense que je ferai un post pour chaque partie du programme, pour pouvoir modifier ceux-ci plus facilement, au lieu d'éditer et rechercher la partie à changer.

Par la pratique du codage, pour ce programme, je me suis fait avoir. Les commandes: PRINT "!tron_no" et PRINT "!tron_off", comme d'ailleurs PRINT "!var=..." c'est le constructeur qui s'en sert pour implanter les lignes, et c'est pas le programme en lisant ces commandes qui décide qui marque ou non les infos à envoyer. Ces commandes peuvent être mis avant une sub, le programme qui est modifié n'est pas encore exécuté.

Là je stop, plus le temps Crying or Very sad Bonne journée!
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 20 Sep 2016 - 23:30

bon je réserve 4 post de suite, avec des problèmes de connexion

J'ai apporté des modifications pour résoudre des problèmes sur d'autres programme important.

Déjà j'ai ajouté une commande de plus:
PRINT "!save=le_nom_d'une_fiche.txt"

celle-ci demande la sauvegarde des sorties dans un fichier, à un endroit précis du programme testé.

J'espère ne pas être obligé de passer par linux, car j'ai encore une réinitialisation avec W10. C'est le seul ordi qui me pose problème avec internet!

En cas de lecture immédiate, je reprendrais après


Dernière édition par cosmos70 le Mar 20 Sep 2016 - 23:39, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 20 Sep 2016 - 23:30

Ici le programme principal, celui du constructeur.bas

Donc dans ce programme, il faut modifier la ligne 13


modifié le 19/10/2016


Code:
rem "##########################################################################"
rem "             Débogueur cosmos70  Version 2.1 du 19 octobre 2016           "
rem "##########################################################################"

' ------------------------------------------------------------------------------
repeat : until scancode = 0

caption 0,"Débogage.bas" : font_size 0,10 : font_bold 0  : width 0,1200:height 0,800 :border_small 0
clipboard_string_copy " ":' pour éviter un stop au départ pour un arrêt précédent
dim dos$ , f$ , a%  , mes$ , limite%, tron_on% , cde$ , fichier$ , debog$  , tron_boucle% , prg$ ,html$

debog$ = "C:\PANO\DEBOG"             :' à définir dès le départ
html$ = debog$ + "aide\Aide1.html"
fichier$ = debog$ + "nom_du_programme_a_deboguer.ini"
' modification du fichier éventuel.
modifier_fichier()
go:
width 0,100:height 0,50
' ---- suite ----
dlist 9
      if file_exists(fichier$) = 1
         file_load 9,fichier$
      else
         message fichier$+" N'a pas été trouvé"+chr$(10)+"Problème concernant le fichier contenant le nom du programme"
         stop
      end_if

dLIST 10 :' on charge le premier programme, et on ajoute les autres dans le dlist
list  11 : width 11,width(0)- 50:height 11,200 : hint 11,11
list  12 : top 12,210 : width 12,width(0)-50 :  height 12,200
dlist 13 : ' mettre le programme retiré des commandes de débogage ( programme_neutre.bas )

memo  20 : top 20,415:width 20,width(0)-50:height 20,500:font_size 20,10:font_bold 20:font_name 20,"Consolas":font_color 20,0,0,100
     hint 20,20 : bar_both 20

if count(9) > 0
   for a% = 1 to count(9)
      f$ = item_read$(9,a%)
      if a% = 1 then prg$ = f$ : dos$ = file_extract_path$(f$) : clipboard_string_copy dos$
      if item_read$(9,a%) = "$$$" then exit_for
      file_add 10,f$
   next a%

   ' =============== suite ==================

   ' ajout du programme de transmission des données.  8765 n° peu probable d'objet
   item_add 11,"transmission_donnes(8765)" :' exécute l'initialisation du transmetteur avec un objet N° 8765 (à choisir)
  
   ' on traite les lignes. On reprend chacune avec le N°, pour le mettre devant. On regarde les variables
   ' correspondant à une liste reçue, on y met les valeurs.
  
   incrustation()

   file_save 10, debog$ + "programme.bas"
   ' on rajoute la partie transmission
   file_add 11,  debog$ + "Envoyer_controleur.bas" :' la partie qui envoi les données pour débogage

   file_save 11, debog$ + "execute.bas"
   file_save 13, dos$ + "programme_neutre.bas"     :' vide des commandes de débogage

   CHAIN debog$ + "execute.bas"
else
   message "le fichier: "+fichier$ + " n'a pas été chargé" : terminate
end_if
return
END
' §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§

sub modifier_fichier()
   label sauver_memo , annule_memo , go , lancer: dim t$ :t$ = chr$(13)+chr$(10)
   repeat : until scancode = 0
   memo 1 : top 1,30 : width 1,510: height 1,150 : font_size 1,10: font_bold 1 : bar_horizontal 1
  
   button 2:caption 2,"Sauvegarder"           :width 2,200:             on_click 2,sauver_memo
      hint 2,"Mettre le chemin et le nom du programme"+t$+"A déboguer"+t$+"Enregistrez les modifications éventuelles"+t$+"faites sur le memo"

   button 3:caption 3,"Lancer débogueur"      :width 3,200:left 3,220:  on_click 3,annule_memo
      hint 3,"Continuez sans rien changer"

   button 4:caption 4,"Exécuter sans dégoguer":width 4,200:left 4,440:  on_click 4,lancer
  
   if file_exists(fichier$) = 1
      file_load 1,fichier$
   end_if
  
   hviewer 5:full_space 5:top 5,200:file_load 5,html$
   if 1=2
     sauver_memo:
       file_save 1,fichier$
       ' goto go :' il n'y a pas retour avec end: Il y en a qui vont avoir mal aux yeux. ici go et gosub, même chose
       ' ---------------------------
       end
     annule_memo:
       gosub go:' idem
     lancer:
       chain item_read$(1,1) :' chain lance et ferme ce programme
   end_if
 end :' stoppe le programme avant l'appui sur les boutons, et c'est gosub go qui fait la suite

end_sub

' =====================================================================
sub incrustation()
   dim_local a% , b% ,a$ , b$ , tr$ ,ligne% , var$ , v% , i% , g$ , flag%: g$=chr$(34)
   if count(10) > 0
      for a% = 1 to count(10)
         caption 0,a%
         a$ = item_read$(10,a%) : tr$ = ltrim$(lower$(a$)) : var$ = ""

         if left$(tr$,12) = "print "+chr$(34)+"!var="
            cde$ = right_pos$(tr$,13) :  a$="!!!NUL"
         end_if

         if left$(tr$,15) = "print "+chr$(34)+"!tron_on"
            tron_on% = 1
            a$="!!!NUL"
         end_if

         if left$(tr$,16) = "print "+chr$(34)+"!tron_off" then tron_on% = 0 : a$="!!!NUL"
        
         if instr(tr$,"!tron_boucle_on") > 0
            tron_boucle% = 1 : a$="!!!NUL"
            item_add 11,"         mess("+chr$(34)+"¤"+str$(a%)+chr$(34)+")"
         end_if
        
         if instr(tr$,"!tron_boucle_off") > 0 then tron_boucle% = 0 : a$="!!!NUL"

         if left$(tr$,13) = "print "+chr$(34)+"!save="
            a$ = ltrim$(a$)
            a$ = right_pos$(a$,14)
            item_add 11,"       mess(" + chr$(34) + "²="+a$+")"
            item_add 11,"wait 500"
            a$ = "!!!NUL"
         end_if
        
         if left$(tr$,13) = "print "+chr$(34)+"!note="
            a$ = ltrim$(a$)
            a$ = right_pos$(a$,14) : a$ = "   > "+a$
            item_add 11,"         mess(" + chr$(34) + "§3" +a$ +")"
            a$ = "!!!NUL"
         end_if
         ' -------------------------------------------
         if left$(tr$,13)= "print "+chr$(34)+"!list("
            a$ = ltrim$(a$)
            a$ = "{" + right_pos$(a$,14)  :' {11)1,10
            item_add 11,"         mess(" + chr$(34) + a$ +")"
            a$ = "!!!NUL"
         end_if
         ' -------------------------------------------
         if tron_on% = 1
            if tron_boucle% = 0
               exclusion(tr$, a%)   :    ' ici on teste les variables
              
               if count(12) > 0
                  for b% = 1 to count(12)
                     ' comparer les variables
                     b$ = item_read$(12,b%)
                     if instr(cde$," "+b$+" ") > 0

                        if var$ <> "" then var$ = var$ +"+"+g$

                        var$ = var$ +" @"
                        var$ = var$ +b$
                        var$ = var$ +"=" + chr$(34) + "+"
                        if right$(rtrim$(b$),1) <> "$" then var$ = var$ + "str$("
                        var$ = var$ + b$
                        if right$(rtrim$(b$),1) <> "$" then var$ = var$ + ")"
                     end_if
                  next b%
                  if var$ <> "" then item_add 11,"          mess("+chr$(34) +var$+")" : var$=""
               end_if
              
               if a$ <> "!!!NUL"
                  if trim$(a$) <> "" then item_add 11,"         mess("+chr$(34)+"¤"+str$(a%)+chr$(34)+")"
               end_if
               ' message tr$:if scancode = 27 then stop

            else
               if left$(tr$,9) = "print "+chr$(34)+"!>"
                  tr$ = trim$(left$(tr$,len(tr$)-1))
                  if rtrim$(right$(tr$,1)) <> "$" :' seule la variable compteur de la boucle doit apparaitre
                     b$ = trim$(right_pos$(tr$,11))
                     var$ =  b$
                     if trim$(var$) <> "" then item_add 11,"          mess(" +var$+")"
                     var$ = ""   :  a$ = "!!!NUL"
                  end_if
               end_if

               if trim$(var$) <> ""     then item_add 11,"         mess("+chr$(34)+var$ +")"

            end_if
         end_if

         if a$ <> "!!!NUL"
            if trim$(a$) <> ""
               item_add 11,a$

            end_if
         end_if
         if tron_on%=1 and tron_boucle%=0
            if left$(tr$,4) = "sub " then item_add 11," mess("+chr$(34)+"°"+str$(a%)+chr$(34)+")"
            if right$(tr$,1) = ":"   then item_add 11," mess("+chr$(34)+"°"+str$(a%)+chr$(34)+")"
         end_if
      next a%
      ' on refait un programme neutre
      if count(10) > 0
         for a% = 1 to count(10)
            a$ = item_read$(10,a%)
            if instr(a$,"Constructeur.bas") > 0
            else
               if instr(trim$(upper$(a$)),"PRINT "+g$+"!") > 0
               else
                  if instr(a$,"' retiré chain > \...\constructeur.bas<") > 0
                  else
                     if instr(a$,"transmission_donnes(") > 0
                     else
                        item_add 13,a$
                     end_if
                  end_if
               end_if
            end_if
         next a%
      end_if
      
   end_if
end_sub
' =====================================================================

sub exclusion(tr$, y%)

   dim_local a$,b$,c$,a%,b%,c% , v% ,flag% , w% , cp%
   clear 12
   ' if faut en premier modifier les guillemets
   cp%=0
   repeat
      v% = instr(tr$,chr$(34))
      if v% > 0
      ' on va reprendre, et retirer la partie chaine
         b$ = right_pos$(tr$,v%+1) : if instr(b$,chr$(34)) = 0 then exit_repeat :' est-ce ça débloque?
         if v% > 0
            if v% > 1
               a$ = left$(tr$,v%-1) + " " : tr$ = right_pos$(tr$,v%+1)
               w%=instr(tr$,chr$(34))
               if w% > 0
                  if w%>1
                     a$ = a$ + right_pos$(tr$,w%+1)
                  else
                     a$ = a$ + right_pos$(tr$,2)
                  end_if
               else
                  exit_repeat  :' plus de guillemet
               end_if
               tr$ = a$
            else  :' v% = 1
               a$ = right_pos$(tr$,2)
               w%=instr(tr$,chr$(34))
               if w% > 0
                  a$ = a$ + right_pos$(tr$,w%+1)
               else   : ' v% =0   plus de guillemet
                  exit_repeat
               end_if
            end_if
         else :' v% = 0
            exit_repeat
         end_if
      end_if
      cp%=cp%+1
   until v% = 0 or w% = 0 or cp% = 10 or scancode = 27
   if scancode = 27 then repeat:until scancode = 0:
   ' séparation par mot
   repeat
      v% = instr(tr$," ")
      if v% > 0
         if v% > 1
            item_add 12,trim$(left$(tr$,v%-1)) : tr$ = right_pos$(tr$,v%+1)
         else
            tr$=right_pos$(tr$,2)
         end_if
      end_if
   until v% = 0
   if trim$(tr$)  <> "" then item_add 12,trim$(tr$)
   ' supprimer les remarques
   if count(12) > 0
      flag% = 0
      for a% = 1 to count(12)
         a$ = item_read$(12,a%)
         if left$(a$,3) = "rem" or left$(a$,1) = "'"
            for b% = count(12) to 1 step -1
               item_delete 12,b%
            next b%
            exit_for
         end_if
      next a%
      ' retirer les doublons
      if count(12) > 0
         for a% = 1 to count(12)
            if a%<count(12)
               a$ = item_read$(12,a%)
               if count(12) > a%
                  for b% = count(12) to  a%+1   step -1
                     b$ = item_read$(12,b%)
                     if b$ = a$ then item_delete 12,b%
                  next b%
               end_if
            end_if
         next a%
      end_if
   end_if
end_sub



Dernière édition par cosmos70 le Mer 19 Oct 2016 - 11:07, édité 6 fois
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 20 Sep 2016 - 23:31

programme qui sera ajouté au programme à tester: Envoyer_controleur.bas

En ligne 16, mettre le chemin de kgf.dll. Ne pas oublier que cette instruction est peut-être déjà dans votre programme.

modifié le 18/10/2016
Voir avec mon webdav pour les modifications, et l'aide à ce jour (18/10)


Code:
END : ' pour le cas où il n'y en aurait pas dans le programme
transmission_donnes(8000)
rem "=========================================================================="
rem "        partie du débogueur qui est rajouté au programme à tester        "
rem "                      cosmos70  version 2.1 18 octobre 2016            "
rem "=========================================================================="

' ajout de ce programme à la fin du programme généré par le constructeur.
' la ligne suivante sera à reporter en première ligne du programme de départ
' ----> transmission_donnes(1000)  :' fait!
end
' *****************************************************************************

sub transmission_donnes(ID_%)
  dim prg_B$ , ID_recoi% , handle_recoit% , envoyer_message$ , envoyer_res% ,fichier_debog$ , Id_fixe% , tron_boucle%
  dim prg_A$ , ID_envoi% , aaaa%
  id_fixe% = id_%

  dll_on "C:\PANO\DEBOG\kgf.dll" :' METTRE LE CHEMIN DE KGF ICI
 
  ' --------------------------------------------------------------------------
  prg_B$ = "Lecture_Contrôle"    :' celui du récepteur
  ID_recoi% = -2222
  ' --------------------------------------------------------------------------
  prg_A$ = "Transmission par débogueur"
  caption 0,prg_A$
  ID_envoi% = -2333              :' pour ce programme, recevoir stop
  EDIT id_%
  left id_%,-2333
  top  id_%,-2333
  ' --------------------------------------------------------------------------
  ID_% = ID_% + 1
  Form id_%  : width id_%,400 : left id_%,(screen_x - 400) /2: height id_%,350
              top id_%,(screen_y -250) / 2 -100  : hide id_%
              id_% = id_%+1
  alpha id_% : parent id_%,id_%-1 :left id_%,20: top id_%,30:font_color id_%,255,0,0 : font_size id_%,11
              caption id_%,"Une commande vient d'être reçu depuis "+chr$(13)+chr$(10)+"le débogueur!"+chr$(13)+chr$(10)+"Ne pas tenir compte du N° de ligne affichée"

  fichier_debog$ = "C:\PANO\DEBOG\" :' Dossier du débogueur.
 
  execute fichier_debog$+"reçoit.exe" :' c'est l'adresse de l'autre programme qui reçoit les données, et permet le contrôle.
  repeat : pause 500 : until handle_form("Lecture_Contrôle") > 0 or scancode = 27
  pause 300 : ' le temps que l'edit sur reçoit.bas soit créé.
  handle_recoit% = dll_call3("IPCGetHandle",adr(prg_B$),len(prg_B$),ID_recoi%) :' celui de l'edit
  ' message "depuis Envoyer_controleur.bas, handle_recoit%="+str$(handle_recoit%)
  ' wait 500 : pause 500
  ' curieusement handle_recoit% reste à 0 si il n'y a pas la commande message. Essaye de ruser:
  label deblocage_handle:  on_click 0,deblocage_handle : wait 500: trigger_click 0 :' cela semble fonctionné maintenant.
  ' ...........................................
 
  mess("envoi handle" + str$(handle_recoit%))
  wait 500
end_sub
' ===========================================
deblocage_handle:
  repeat
      handle_recoit% = dll_call3("IPCGetHandle",adr(prg_B$),len(prg_B$),ID_recoi%)
      aaaa% = aaaa% +1 :wait 100
  until handle_recoit% > 0 or aaaa% = 100

  ' message aaaa%
 
  free aaaa%
  off_click 0
return

' ==============================================================================
'                      ===============================
'                                  =======

sub mess(envoyer_message$)
  envoyer_message$ = trim$(envoyer_message$)
  if trim$(envoyer_message$) = "" then exit_sub
  dim_local a$,a%,b$,v%,un%,deux% , n%, nb%
  if text$(id_fixe%) = "arret_boucle" then reception_message_arret()
 
  if left$(envoyer_message$,1) = "{" :    rem  {11)1,10  rem  "        mess("{11)1,5")
      a$ = right_pos$(envoyer_message$,2)
      v% = instr(a$,")")
      if v% > 0
        b$ = left$(a$,v%-1) : n% = val(b$) :' n° objet
        a$ = right_pos$(a$,v%+1) :' 1,10
        v% = instr(a$,",")
       
        if v% > 0
            b$ = left$(a$,v%-1)
            un% = val(b$)
            a$ = right_pos$(a$,v%+1) : deux% = val(a$)
           
        else
            ' la on peut voir avec >5 pour les 5 derniers ou <5 les 5 premiers ( 5= exemple )
            if left$(a$,1) = "<" or left$(a$,1) = ">"
              if left$(a$,1)="<"
                  un% = 1
                  deux% = val(right_pos$(a$,2))
              else
                  deux% = count(n%)
                  un% = deux% - val(right_pos$(a$,2))
                  if un% < 1 then un% = 1
              end_if
            end_if
            ' ------------------------------------
        end_if
      end_if
      nb% = count(n%)
      if nb% = 0
        envoyer_message$ = "}Liste:"+str$(n%) + "  vide!"
      else
        b$ = "}Liste:"+str$(n%)+ " = "+ str$(nb%) + " éléments"  : ' }LISTE:11 = 12 éléments
        envoyer_message$ = b$
        envoyer_res% = dll_call3("IPCSendMessage",adr(envoyer_message$),len(envoyer_message$),handle_recoit%)
        ' --------------- contenu à envoyer
        if deux% > count(n%) then deux% = count(n%)
        b$ = "»" + str$(un%)+"|"
        for a% = un% to deux%
            a$ = item_read$(n%,a%)
            if len(b$) > 150
              envoyer_res% = dll_call3("IPCSendMessage",adr(b$),len(b$),handle_recoit%)
              b$ = "»" + str$(a%) + "|"
            end_if
            b$ = b$ + a$ + chr$(8)      : ' »10|dix^onze^douze^treize^quatorze^  / ^=chr$(10)
        next a%
        if b$ <> "" then envoyer_res% = dll_call3("IPCSendMessage",adr(b$),len(b$),handle_recoit%)
        exit_sub
      end_if
  else
      ' message "Envoyez_controleur envoyer_message$="+envoyer_message$:if scancode = 27 then stop
  end_if
  envoyer_res% = dll_call3("IPCSendMessage",adr(envoyer_message$),len(envoyer_message$),handle_recoit%)
end_sub
' ============================================================================== '
sub reception_message_arret()
  show ID_fixe%+1 : to_foreground ID_fixe%+1
  text ID_fixe%,""  :  stop  :  hide ID_fixe%+1
end_sub


Dernière édition par cosmos70 le Mar 18 Oct 2016 - 1:30, édité 3 fois
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 20 Sep 2016 - 23:31

Ici le programme Reçoit.bas.

C'est le programme qui reprend les données envoyé par votre programme modifié.
Dans celui-ci j'ai mis différents bouton:

Contrôle qui décale la fenêtre à gauche, et montre les 300 (je crois) dernières données reçus. J'ai augmenté le nombre de lignes à visualiser.

Le bouton Retrait, remet la fenêtre sur le côté droit.

Sauve_défaut fait une sauvegarde directe de la liste pour pouvoir la revoir. Il n'y a pas de nom à entrer, c'est celui de débogage.txt, qui est mis dans le dossier de votre programme.

Lire défaut, celui-ci relit celui écrit par le bouton précédent. A ce propos, en y réfléchissant, il faut copier le nom du fichier avec le presse papier, si ce dernier a été modifié. Dans le cas contraire, il il a aussi un dernier bouton:

Lire fiche Avec celui-ci, on fait appel à l'explorateur pour choisir le fichier.

Ce programme doit-être exécutable. Mais celui-ci peut-être lancer depuis panoramic pour lire un fichier sauvegardé.

Une dernière chose que j'ai fait pour moi, et pour voir de près. A la fermeture, un fichier complet de toutes les données reçues est sauvegardé. C'est peut-être pas utile pour vous.

Pas de modification de ligne !

modifié le 18/10/2016

Code:
rem "##########################################################################"
rem "    second programme du débogueur, celui qui affiche les résultats      "
rem "        cosmos70  version 2.1 du 18 octobre 2016                        "
rem "##########################################################################"

rem réceptionne les ordres
' module pour lire les lignes du programme de language, et vérifier
label clic , reception , clic_20  , retrait , sauve_defaut , lecture_auto , lire_fiche , final ,verslehaut,verslebas
label enhaut , enbas , marque , stoppe
full_space 0 : left 0,screen_x -150 : width 0,width(0)-40

dll_on "C:\PANO\DEBOG\kgf.dll" : ' METTRE LE CHEMIN DE KGF ICI                                                                                                    on_click 0,clic

dim Le_programme$  , position_Edit_recu , position_Edit_envoi ,handle% , recu$ ,handle$ , recp% , nombre$
dim nn$,aa$,bb$,cc$,tab%, a% , t$ ,s$ , v% , n% , compt%  , handlerecu%  , debog$
dim line% , w%  , fichier$ , flag% , nn% , f$ , i% , j% , r%  , x , y , marq% , decal%
dim hnd% , res% , prg_A$ : prg_A$ = "Transmission par débogueur"

debog$ = "C:\PANO\DEBOG\"            :' à définir dès le départ
dir_change debog$
' fichier$ = debog$ + "nom_du_programme_a_deboguer.ini"
dlist 9
'    if file_exists(fichier$) = 1 then file_load 9, fichier$
' fichier$ = item_read$(9,1)    :' le fichier ini n'a plus d'importance
' debog$ = file_extract_path$(fichier$)

Le_programme$ = "Lecture_Contrôle"  :  position_Edit_recu = -2222: position_Edit_envoi = -2333
s$ = chr$(30) :' séparation
t$ = chr$(13)+chr$(10)
 
form    50:left 50,screen_x-55:height 50,screen_y-100:border_small 50 :width 50,60
picture 51:parent 51,50:width 51,45  : height 51,200 : top 51,110:color 51,225,160,0              : on_click 51,verslehaut
          print_target_is 51:print_locate 8,80 : print "Vers":print_locate 17,100 : print "le"
          print_locate 5,120 : print "HAUT"
picture 52:parent 52,50:width 52,45  : height 52,200 : top 52,340 :color 52,225,160,0              : on_click 52,verslebas
          print_target_is 52:print_locate 8,80 : print "Vers":print_locate 17,100 : print "le"
          print_locate 9,120 : print "BAS"

picture 53:parent 53,50:width 51,45  : height  53,55: top 53,10:color 53,225,160,0                : on_click 53,enhaut
          print_target_is 53:print_locate 8,10 : print "En":print_locate 5,30 : print "HAUT"
picture 54:parent 54,50:width 54,45  : height  54,55 : top 54,580 :color 54,225,160,0              : on_click 54,enbas
          print_target_is 54:print_locate 8,10 : print "En" :print_locate 9,30 : print "BAS"
          hide 50
          caption 0,Le_programme$:' celui-ci est le programme en arrière plan
' ----------------------------------------------------------------
'          Réception des données
edit    1:left 1, position_Edit_recu : top 1, position_Edit_recu
' ----------------------------------------------------------------
'          Envoi des données
edit    4:left 4, position_Edit_envoi: top 4, position_Edit_envoi
' ----------------------------------------------------------------

alpha    2:left 2,120 : font_size 2,10 : font_bold 2 : font_color 2,255,0,0
open_dialog 3
alpha    5:font_size 5,12
dlist  10:' left 10,300 : top 10,80:width 10,150:height 10,300
          if file_exists(debog$+ "programme.bas") =1 then file_load 10,debog$ + "programme.bas" :' fichier$
button  15:top 15,30            :caption 15,"Contrôle"    :width 15,80                                : on_click 15,clic
button  16:left 16,100:top 16,30:caption 16,"retrait"    :width 16,80                                : on_click 16,retrait
button  17:left 17,200:top 17,30:caption 17,"sauve défaut":width 17,180                                : on_click 17,sauve_defaut
button  18:left 18,400:top 18,30:caption 18,"lire défaut" :width 18,180                                : on_click 18,lecture_auto
button  19:left 19,600:top 19,30:caption 19,"lire fiche"  :width 19,180                                : on_click 19,lire_fiche
  hint 19,"Ouvrir les sorties de débogage"+t$+"Uniquement dans le dossier DEBOG"
dlist  20:' show 20:left 20,800: top 20,100 :width 20,200:height 20,600:font_size 20,8
          ' font_bold 20: font_name 20,"Consolas"
          for a% = 1 to 325:item_add 20,"":next a% :' on_click 20,clic_20
picture 30:top 30,90:width 30,width(0)-40:height 30,screen_y-130:font_name 30,"Consolas"
          2d_target_is 30  :  font_size 30,6 :print_target_is 30                                      : on_click 30,marque
          font_bold 30  :font_size 30,9 : color 30,222,222,222
button  21:top 21,60:caption 21,"stop":on_click 21,stoppe : HINT 21,"Donne un ordre STOP au programme en cours"
dlist  60
          pause 100
          text 1,""                                                                                    : on_change 1,reception
on_close 0,final

END
' ==============================================================================
stoppe:
    off_change 1
    envoyer("arret_boucle")
    caption 5,"boucle:"+recu$
    wait 1
    on_change 1,reception
 return
 ' ==========================================================================
clic:
  off_click 15
  nettoie_haut()
  if 1=2
  if count(20) > 0
      repeat
        aa$ = trim$(item_read$(20,1))
        if aa$ = "" then item_delete 20,1
        if aa$ <> "" then exit_repeat
      until aa$ <> "" or count(20) = 0
  end_if
  end_if
 
  trigger_click 54 :' click En bas
  caption 2,nombre$
  left 0,0
  line% = count(20)-36 : if line% < 1 then line% = 1
  if count(20) = 0 then return
  show 50 :to_foreground 50
return
' =========================================
enhaut:
  line% = 1
  if count(20) > 0 then gosub clic_20
return
' -------------------
enbas:
  if count(20) > 0
      line% = count(20)-36
      if line% < count(20) then line% = count(20)-35
      if line%<1 then line% = 1
      gosub clic_20
  end_if
return
' -------------------
verslehaut:
  if count(20) > 0
      line% = line%-20 : if line%< 1 then line% = 1
      if decal% <> 0 then decal% = decal%+20
      gosub clic_20
  end_if
return
' --------------------
verslebas:
  if count(20) > 0
      line% = line% +20 : if decal% <> 0 then decal% = decal%-20
      if line% > count(20)-35 then line% = count(20)-35  : decal% = 0
      gosub clic_20
  end_if
return
' ===========================================================================

final:
  if count(60) > 0
      if message_warning_yes_no("On sauvegarde l'ensemble des données"+chr$(13)+"(Recouvre l'ancien fichier si il existe!)") = 1
        file_save 60,debog$+"voir ce fichier.txt"
      end_if
  end_if
  terminate
return

' ===========================================================================
sub nettoie_haut()
  dim_local a% : a% = 1
  if count(20) > 0
      repeat
        aa$ = trim$(item_read$(20,a%))
        if aa$ = ""
            item_delete 20,a%
            if count(20) = 0 or a% > count(20) then exit_repeat
        else
            a% = a% +1
        end_if
      until a% = count(20)
  end_if
end_sub
' ===========================================================================
sauve_defaut:
  if count(20) > 0 and dir_exists(debog$)=1
      nettoie_haut()
      file_save 20,debog$ + "debogage.txt"
  end_if
return
' ===========================================================================
sub sauve_cde()    : ' sauvegarde demandée par le programme à déboguer : PRINT "!save= ....."
  nettoie_haut()
  file_save 20,debog$+ recu$
end_sub
' ===========================================================================
lecture_auto:
  if file_exists(debog$ +"debogage.txt")=1
      file_load 20,debog$+"debogage.txt"
      if file_exists(debog$+"programme.bas") =1 then file_load 10,debog$+"programme.bas" :else: message "programme.bas n'a pas été trouvé":return
      nettoie_haut()
  end_if
return
' ===========================================================================
lire_fiche:
  filter 3,"Onvrir fiche dans «DEBOG»|*.txt;*.ini"
  f$ = file_name$(3)
  debog$ = file_extract_path$(f$)
  if file_exists(debog$+"programme.bas") = 1 then file_load 10,debog$+"programme.bas"

  if f$ <> "_"
      file_load 20,f$
      nettoie_haut()
      line% = count(20)-35
      if line% < 1 then line% = 1
      if count(20) > 0 then gosub clic_20
  end_if
  show 50 :to_foreground 50
return
' ===========================================================================
retrait:
  left 0,screen_x -100 : hide 50
return
' ===========================================================================
SUB initialisation(recu$)
  handlerecu% = val(recu$)
  handlerecu% = dll_call3("IPCGetHandle",adr(prg_A$),len(prg_A$),position_Edit_envoi)
end_sub
' ===========================================================================
sub envoyer(note$)
  res% = dll_call3("IPCSendMessage",adr(note$),len(note$),handlerecu%)
end_sub

' ===========================================================================
reception:
  recp% = recp%+1
  recu$=text$(1)
  if left$(recu$,12) = "envoi handle" then initialisation(right_pos$(recu$,13)) : return
  if recu$ = "stop" then terminate
  if instr("}¤§°»@",left$(recu$,1)) > 0 then modifie(recu$)
return

' =======================================================================
sub modifie(aa$)
  if aa$ <> ""
      item_add 20,trim$(aa$)
      item_add 60,trim$(aa$)
      if count(20) > 300 then item_delete 20,1
  end_if
end_sub

' =======================================================================
sub lister_element(recu$)
  recu$ = right_pos$(recu$,8)
  if right$(recu$,6) = " vide!"
      bb$ = trim$(left$(recu$,instr(recu$," ")))
      v% = val(bb$)
      aa$ = "§A          Liste: " + str$(v%) + " vide!"
  else
      rem  "LISTE:11 = 12 éléments"
      bb$ = right_pos$(recu$,instr(recu$,"=")+1)
      bb$ = trim$(bb$)
      v% = val( left$(bb$, instr(bb$," ")))
      aa$ = "§A          Liste: " + str$(v%) + " élément(s)"
  end_if
end_sub
' =========================================================================
sub montrer_item(recu$)  :' composer la chaine des contenus d'un objet memo,dlist,list
  ' »10|dix^onze^douze^treize^quatorze^  / ^=chr$(8)
  recu$ = rtrim$(right_pos$(recu$,2)) :' if right$(recu$,1) = chr$(8) then recu$ = left$(recu$,len(recu$)-1)
  v%  =  instr(recu$,"|")
  if v% > 0
      bb$ = left$(recu$,v%-1)
      r% = val(bb$)  :' servira de compteur (n° d'item)
      recu$ = right_pos$(recu$,v%+1)
      rem RESTE: "dix^onze^douze^treize^quatorze^" '    ^ = chr$(8)
      aa$ = ""
      repeat
        v% = instr(recu$,chr$(8))

        if v% > 0
            aa$ = aa$ + "§B"+str$(r%)+" §C" + left$(recu$,v%-1)+ "§0"+"  "
            recu$ = right_pos$(recu$,v%+1)
        else
            aa$ = aa$ + "§B"+str$(r%)
        end_if

        r% = r% +1
      until v% = 0
      aa$ = aa$ +" §C" + recu$
  end_if
end_sub

' ===============================================
clic_20:
  off_click 15  : off_change 1 : hide 50 : i%=0
  nettoie_haut()
  if count(20) > 0
      2d_clear : 2d_pen_color 0,255,0
      compt% = 0  : tab% = 0
      for a% = line% to count(20)
        if a% > count(20) or a% <1 then exit_for
        aa$ = trim$(item_read$(20,a%))
        ' ....................................................................
        if left$(aa$,1) = "}"
            lister_element(aa$)
        end_if
        ' ....................................................................
        if left$(aa$,1) = "»"
            montrer_item(aa$)
        end_if
        ' ...........................................................
        if left$(aa$,1) = "¤"  : ' lecture d'une ligne programme
          aa$=right_pos$(aa$,2)
          n% = val(aa$) : aa$ = str$(n%)  :' correction d'une erreur dans le choix d'une ligne
          if count(10) > 0 and n%>0 and n% <= count(10)
              caption 0,"count(20)=" + str$(count(20)) + "  aa$="+ aa$+ "  count(10)="+str$(count(10))
              aa$ = "§1>"+right$("    "+aa$,5)+" §4"+ item_read$(10,n%)  :'  message aa$ : if scancode = 27 then stop
          else
              message "Certainement que le le fichier source: Programme.bas "+t$+"ne correspond pas avec le fichier choisi"+t$+"Peut-être le programme a été fermé sur une erreur"
          end_if
        end_if

        ' ....................................................................
        if left$(aa$,1)="°"
              ' sub ou procédure
              aa$=right_pos$(aa$,2)
              n% = val(aa$):  aa$ = str$(n%)
              aa$ = "§1>"+right$("    "+aa$,5)+" §8"+ item_read$(10,n%)
        end_if

        ' .....................................................................
        if left$(trim$(aa$),1) = "@"  :' variable
            aa$ = trim$(aa$)  : tab%=50 :' en retrait par rapport aux N° de ligne
            aa$ = right_pos$(aa$,2)
            bb$ = "  §6 "
            repeat
              v% = instr(aa$,"=")
              if v% > 0
                  bb$=bb$+left$(aa$,v%)+" §7"
                  aa$ = right_pos$(aa$,v%+1)
                  w% = instr(aa$,"@")
                  if w% > 0
                    bb$ = bb$+ left$(aa$,w%-1)
                    aa$ = right_pos$(aa$,w%+1)
                  else
                    bb$ = bb$ + aa$
                  end_if
                  bb$ = bb$ + " §6 "
              end_if
            until v% = 0 or w% = 0
            aa$ = bb$
        end_if
        ' ......................................

        repeat
            v% = instr(aa$,"§")
            if v% > 0
              bb$ = mid$(aa$,v%+1,1)

              if bb$ = "0" :' N° de ligne:
                  font_color 30,0,0,0
                  print_ecrit()
              end_if

              if bb$ = "1" :' N° de ligne:
                  font_color 30,80,110,0    :' vert foncé
                  print_ecrit()
              end_if

              if bb$ = "2"
                  font_color 30,90,10,34    :' marron foncé
                  print_ecrit()
              end_if

              if bb$ = "3"
                  font_color 30,200,0,0    :' rouge vermeil
                  print_ecrit()
              end_if

              if bb$ = "4"
                  font_color 30,55,0,150    :' bleu foncé
                  print_ecrit()
              end_if

              if bb$ = "5"
                  font_color 30,255,0,0    : 2d_fill_on : 2d_fill_color 0,0,0
                  print_ecrit()            : 2d_fill_color 255,255,255 : font_color 30,0,0,0
              end_if

              if bb$ = "6"
                  font_color 30,0,0,0      : 2d_fill_color 255,255,0
                  print_ecrit()            : 2d_fill_color 255,255,255 : font_color 30,0,0,0
              end_if

              if bb$ = "7"
                  2d_fill_color 75,91,75    :  font_color 30,255,255,255          :' 150,0,150  -  30,255,255,255
                  print_ecrit()            :  2d_fill_color 255,255,255 : font_color 30,0,0,0
              end_if

              if bb$ = "8"
                  2d_fill_color 150,0,0    :  font_color 30,255,255,0
                  print_ecrit()            :  2d_fill_color 255,255,255 : font_color 30,0,0,0
              end_if
              ' ----------------
              if bb$ = "A"
                  2d_fill_color 210,210,0  : font_color 30,255,0,0
                  print_ecrit()
                  2d_fill_color 255,255,255 : font_color 30,0,0,0
              end_if
              ' ----------------
              if bb$ = "B"
                  2d_fill_color 210,210,0  : font_color 30,255,0,0
                  print_ecrit()
                  2d_fill_color 255,255,255 : font_color 30,0,0,0
              end_if
              ' ----------------
              if bb$ = "C"
                  2d_fill_color 50,110,115  : font_color 30,255,255,255
                  print_ecrit()
                  2d_fill_color 255,255,255 : font_color 30,0,0,0
              end_if
              ' ----------------
            end_if
        until v% = 0 or scancode = 27

        compt% = compt% +1
        tab%=0
        if compt% >35 then exit_for
      next a%

  end_if
  if decal% > 0 then 2d_pen_color 255,0,0 :2d_fill_color 255,0,0: 2d_circle 15,decal%*21-10 ,10 :2d_fill_color 255,255,255
  on_click 15,clic  : show 50 :to_foreground 50  :on_change 1,reception
  j% = 0
return

sub print_ecrit()
    bb$ = right_pos$(aa$,v%+2)
    v% = instr(bb$,"§")
    if v%> 0
      aa$ = right_pos$(bb$,v%)
      bb$ = left$(bb$,v%-1)
    end_if
    print_locate tab%+30,compt%*21 : print bb$
    tab% = tab%+ text_width(bb$,30)
end_sub

marque:
  show 50 : to_foreground 50
  y = mouse_y_position(30)
  marq% = int(y/21)+1
  if decal% <> 0 then 2d_pen_color 255,255,255 :2d_fill_color 255,255,255: 2d_circle 15,decal%*21-10 , 10
  2d_pen_color 255,0,0 :2d_pen_color 255,0,0 :2d_fill_color 255,0,0: 2d_circle 15,marq%*21-10 , 10 :2d_fill_color 255,255,255
  decal% = marq%
return




Dernière édition par cosmos70 le Mar 18 Oct 2016 - 1:32, édité 6 fois
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 20 Sep 2016 - 23:33

Tuto à copier et sauvegarder dans le dossier du débogueur. Je l'ai fait avec le programme de JL35. J'en ai fait un plus puissant pour faire des tutoriels de langage, mais il est plus complexe au départ, étant fait pour un travail précis.

J'espère qu'il va passer sur le forum, vu que c'est du html, et je ne sais pas si il n'y a pas des restrictions. Apparemment ça marche avec l'aperçu, alors allons-y!

No  No  No  A vous de voir si ça vous intéresse. Toujours est-il que si il y a un problème, je préférerai le savoir maintenant, que dans un mois, car après être sorti d'un programme pour rentrer dans un autre, je rechigne à repartir dans le code, qui peut-être loin de mes pensées. Désolé de dire cela, mais je crois que c'est un peu vrai pour tout le monde. Re  Sleep

J'ai pas pensé, mais le plus simple, est de faire un programme avec HVIEWER, et de charger le fichier.

Aide html:
 

Donc sauvegardez le avec l'extension ".html"


Programme qui va bien avec:

Code:
' édition de l'aide pour le débogueur avec Hviewer
hviewer 1 : full_space 1
file_load 1,"C:\PANO\DEBOG\Aide\Aide_forum.html"

Evidemment, vous mettez le nom qui vous convient. Même faire un exécutable avec.



Pour ma part, je ne vois pas ce que je peux ajouter de plus. Ce sont vos éventuelles interventions qui peuvent faire apporter une amélioration.

J'aurai bien aimé avoir votre avis, une fois avoir testé ce programme. Je ne vois l’intérêt pour moi, de continuer à faire du baratin. Sans vouloir me faire des fleurs, j'avoue que de tous les langage que j'ai pu utiliser, concernant le débogage, c'est celui-ci qui me convient le mieux. sunny


Dernière édition par cosmos70 le Mer 21 Sep 2016 - 15:22, édité 1 fois
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mer 21 Sep 2016 - 8:31

Bonjour Cosmos70 !

Là c'est très clair. je regarde ce soir !

Vu les explications, je pense que tout le monde devrai pouvoir accéder au programme.
Merci.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Sam 24 Sep 2016 - 13:00

Cosmos70, c'est décidé je regarde ton déboggeur aujourd'hui, c'est parti... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Sam 24 Sep 2016 - 17:09

1er compte rendu :

1) J'ai enregistré mes 3 programmes : Constructeur.bas / Envoyer_controleur.bas / Reçoit.bas

2) J'ai renommer les chemins indiqués et lancé un exécutable de Reçoit.bas en Reçoit.exe

3) J'ai créé un fichier fiche.ini.
   - Sur la 1ère ligne j'ai indiqué le nom du fichier à déboguer  avec son chemin D:\BASIC\DEBOGUEUR\test.bas
   - puis sur la dernière ligne $$$ pour terminer.

4) Dans le fichier à déboguer test.bas j'ai rajouté en ligne 5 et 6 :
   - clipboard_string_copy "D:\BASIC\DEBOGUEUR\fiche.ini"
   - chain "D:\BASIC\DEBOGUEUR\Constructeur.bas"

   - J'ai enregistré test.bas et je l'ai exécuter.

De nouveau fichiers sont apparus : execute.bas / pourquoi.txt / programme_neutre.bas

A priori cela fonctionne. Il ne me reste plus qu'a comprendre comment l'utiliser.
En testant plusieurs fois j'ai eu des messages d'erreurs mais bon, pour l'instant je vais tenter de mieux comprendre le fonctionnement.

En tous cas merci pour ton programme Cosmos70.  Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Sam 24 Sep 2016 - 17:24

Çà tombe bien, je suis sur le point de partir, et avant j'ai vérifié le forum.

Depuis il y a eu des modifications que je n'ai pas encore reporté. Peut-être que cela vient du programme reçoit.bas, j'ai modifié l'ordre des commandes, pour que lon_change soit vu en dernier.

Mais je rajoute des commandes, et pour le moment, il y a trop de changements pour que je puisse mettre à jour les programmes. Je reprendrai ce soir, même si je devrai rester au lit. Pas bien du tout, mais c'est pas grave.
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Sam 24 Sep 2016 - 17:53

Salut Cosmos70,

Pour les modifications prends ton temps...
Je ne suis pas très dispo sur le forum, il fait beau et j'en profite un peu ! Wink

Quant à ta santé, prends grands soin de toi. Je sais de quoi je parle...
Je viens de passer une poignée d'années ou j'étais poursuivi par une fatigue chronique qui m'a obligé à arrêter toutes mes activités et même celles d'internet durant certaines périodes... pale

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Dim 25 Sep 2016 - 23:43

Bonsoir,
J'ai passé pas mal de temps pour reprendre ce programme et rajouter une commande. Pour ce type de programme, lorsqu'on modifie l'un des sources, cela pose aussi problème sur les autres sources. Et lors d'une erreur, dificile de savoir sur lequel il faut agir.

J'ai essayé différents programmes pour tester, avec plus ou moins de complications pour ceux-ci, et apparemment ça se passe bien.

J'ai rajouté la commande suivante:

PRINT "!liste(10)1,20" 10 pour le n° d'objet, 1 pour le premier item à montrer, 20 pour le dernier (sous réserve que ceux-ci soient présent! Si c'est pas le cas, il n'y a pas d'erreur, vu que c'est sous contrôle.

exemple:
 

Il y a encore des choses à voir,, comme les lignes repères pour suivre les lignes de données, qui ne sont pas misent à jour lorsqu'on clique sur les derniers boutons ajoutés.

J'ai ajouté dans le programme de réception, une forme verticale avec 4 bouons (pictures car les boutons ne se détachent pas assez) pour décaler les lignes de 10 en 10. La sortie des données étant dans un picture, le bouton scroll de la sourie ne sert pas.

Spoiler:
 
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Lun 26 Sep 2016 - 21:08

Bonsoir,

Je viens de mettre une nouvelle version pour le programme reçoit.bas.

La gestion des pages ne me convenait pas. Je ne comprenais pas pourquoi, j'ai par moments du mal à cliquer sur les boutons de page en page. J'ai donc changer les commandes ACTIVE et INACTIVE par SHOW et HIDE, et j'ai compris. En fait j'avais un picture de près de 7000 pixels, et chaque fois que je cliquais en haut, ou en bas, avec un gros fichier, il mettait tout le temps pour écrire sur l'ensemble de celui-ci. Maintenant on se déplace sur un picture de l'écran.

Peut-être l'un de vous pourrait-il me dire ce qu'il en est. Problème ou non? Je ne cherche pas des fleurs, mais c'est maintenant ou jamais de faire un rapport. Si il n'y a pas de retour, je ne vais pas mettre ce post au devant des autres sans raison. Rester dans l'ombre me convient très bien. Cool

Autre chose: Pour les commandes passées par PRINT "!commande...", une seule commande par ligne. Ensuite sur celles-ci, respecter l'écriture, car je n'ai pas fait de teste pour vérifier si elles sont bien écrites.
Revenir en haut Aller en bas
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 27 Sep 2016 - 0:08

Je viens de recharger le programme reçoit.bas. Je crois que j'ai trouvé une bonne solution pour suivre les lignes.

Lorsque je clique sur le picture sur une ligne, un cercle rouge est copié sur la marge de gauche.
Comme les déplacements de page en page se fonds sur 20 lignes, en décalant les pages, on retrouve la ligne. A chaque fois qu'on se trouve en bout de lecture sur la page, un clic à cet endroit, reporte la marque, et on s'y retrouve. La lecture sur un picture, ce n'est pas comme sur un memo, on a pas de curseur, ou alors il faut faire le programme pour, et ce n'est pas le but ici.
Sleep

Edit: Je n'avais pas encore pris le temps de vérifier le programme généré en même temps que le reste:
programme_neutre.bas, et c'est pour cette raison que j'en avais pas parlé.

Apparemment il n'y a pas d'erreur. Celui-ci sert à reprendre à la place du programme sur lequel on a mis les mots-clés pour le débogage. Toutes les instructions ajoutées sont retirées dans celui-ci. Seule la ligne clipboard_string_copy mis avant chain "C:\...\constructeur.bas" est restée, car elle pourrait faire aussi partie du programme (ce qui est mon cas, vu que j'assemble plusieurs morceaux pour reconstituer un programme, à la place d' #include, à partir de la lecture d'un fichier). Donc une fois que le programme est opérationnel, on peut prendre cette copie, sans aller à la recherche des mots ajoutés.
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 27 Sep 2016 - 7:53

Bonjour Cosmos70 !

Bon et bien je vais remettre tout ça à jour et je vais retester...
Merci et bonne journée à tous cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Invité
Invité



MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mar 27 Sep 2016 - 10:35

Bonjour Minibug, et à la communauté.

Merci de bien vouloir faire un teste, et donner ton opinion, et poster les problèmes que tu peux trouver.

Pour ce programme, je conviens parfaitement qu'il est surtout destiné pour la conception de gros programmes, difficile à concevoir, plutôt que pour des petits, où un simple message donne la solution à un problème.

Cela dit, je redis ou je complète le fonctionnement de ce programme.
Après avoir fait l'installation, on mets à jour les différents chemins du programme. A ce propos, je suis parti sur l'idée du presse papier pour retenir le nom du fichier à lire dans constructeur.bas. Mais on peut tout aussi bien mettre carrément le chemin à la place du clipboard. Ainsi à la ligne 10 de constructeur : «fichier$ = clipboard_string_paste$» , on pourrait le nom en dur du fichier. Il n'y aurait plus besoin de faire passer par le presse-papier  le chemin du programme à tester. Comme généralement on ne teste qu'un programme à la fois, il suffit d'aller dans le dossier du débogueur, ouvrir ou créer le fichier et mettre dedans le nom complet du programme à tester. C'est tout.

Seul la ligne 6 qui possèderait «chain "chemin_du_débogueur\Constructeur.bas"» serait à inclure. Ensuite on lance son programme, et si besoin, chaque fois que le programme est en mode attente d’évènement, on peut cliquer sur le programme à droite (en arrière plan, si la form du programme est en mode full_space, sur le bouton "contrôle".
Rappel: seule la partie qui sont après la commande PRINT "!tron_on" sont lues et reportées dans l'autre programme. Si c'est le cas, alors elles sont visible dans ce dernier, et à tout moment on peut voir en arrière ce qu'il s'est passé. Ensuite, on clique sur "retrait", et on reprend l'exécution de son programme.

Le fichier: "voir ce fichier.txt" était un contrôle personnel, et j'ai oublié de le retirer. Ce fichier est généré lors de la fermeture du programme de droite. Celui-ci a l'ensemble des lignes qui ont été transmises, alors que la sauvegarde auto, ne sauvegarde que les dernières. J'ai laissé cette possibilité, puisqu'elle m'étais pratique, alors pourquoi l'enlever. Cela dit, si ce fichier exixte, à la fermeture, un message demande confirmation pour écrasement ou non de celui-ci.

Il restera à mettre à jour le fichier d'aide. Peut-être ce soir.

EDIT: Je mets le programme que j'avais à un temps X, où je faisais des essais pour avoir un memo qui pouvait-être aussi un list:

Des commandes sont déjà présentes, il y a juste à faire le fichier avec le chemin et nom de ce programme, et modifier les lignes 5 et 6.

Code:
' teste de saisie d'une ligne d'un memo'
left 0,100
label selection

clipboard_string_copy "C:\PANO\temp\fichier.ini" :' le nom du fichier contenant le nom du programme et des compléments
chain "C:\PANO\DEBOG\Constructeur.bas"

print "!tron_on"
dim a$,i$ ,a% ,retour$
i$=chr$(4)

memo 1:left 1,50:top 1,50:width 1,200:height 1,200:font_size 1,10 :bar_both 1:' barre indispensable pour éviter les retour-chariot'
 data "pomme de terre",carotte,poireau,choux,persil,salade,tomate,poivron,citrouille,potiron,lentille,navet,topinanbour,$
 print_target_is 1
 repeat
 read a$
 if a$ <> "$" then print a$:else:print " "
 until a$ = "$" or scancode = 27
 on_click 1,selection :cursor_arrow 1
alpha 2:left 2,20:font_size 2,12:font_bold 2
end
' ----------------'
selection:
 clic_memo(1) :' N° du memo
 caption 2,retour$
return  
sub clic_memo(n%)
 dim_local a$,b$,a%,l%,b%,j%  
 print "!var= a$ b$ a% l% b% j% "
 
 if item_read$( n% ,count(n%))="" then item_delete n%,count(n%)
 clipboard_string_copy i$ : clipboard_paste n% :' insert un caractère à l'emplacement du curseur
 ' celui-ci est recherché dans le memo, pour retrouver la ligne.
 if count(n%)>0
 l%=0
 print "!note=On regarde les item du 2ème au 5ème s'il sont présent."
 print "!list(1)2,5"
 print "!note=On montre les contenus du list 1, depuis 1 à 20"
 print "!list(1)1,20"
 for a% =1 to count(1)
 a$ =item_read$( n% , a% )
 b% = instr( a$ , i$ )
 if b% > 0
 if b% > 1 then a$ =left$(a$,b%-1)+mid$(a$, b% +1,len(a$)):else:a$=mid$(a$,2,len( a$ )
 item_delete n%,a%:item_insert n% , a% , a$
 if l% =0 then l%=1
 SELECT_TEXT n% , l% ,len( a$ )+1
 retour$ = a$
 else
 l% =l%+len( a$ )+2
 end_if
 next a%
 end_if
end_sub

 
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   Mer 28 Sep 2016 - 8:25

Merci Cosmos70,

je regarderai dans le WE prochain. Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Contenu sponsorisé




MessageSujet: Re: Débogueur reporté sur une autre fenêtre.   

Revenir en haut Aller en bas
 
Débogueur reporté sur une autre fenêtre.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 4Aller à la page : 1, 2, 3, 4  Suivant
 Sujets similaires
-
» Un autre mystère
» Comment faire un lien vers une autre page du site ?
» mettre à l'heure d'un autre pays
» Comment faire un lien vers un autre site?
» [RESOLU] Fermer une fenêtre avant d'ouvrir une autre

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: