Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Débogueur reporté sur une autre fenêtre. | |
| | |
Auteur | Message |
---|
Invité Invité
| Sujet: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 1:53 | |
|
Dernière édition par cosmos70 le Mar 18 Oct 2016 - 22:59, édité 4 fois |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 2:28 | |
| Programmes revus, voir les dernieres pages
Dernière édition par cosmos70 le Mar 18 Oct 2016 - 23:01, édité 1 fois |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 2:49 | |
| 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! |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 9:46 | |
| Bonjour. Déjà je regarde le titre que j'ai mis 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? |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 10: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. 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... | |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 12: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?" ... |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 13: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. |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 18 Sep 2016 - 20: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. | |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Lun 19 Sep 2016 - 8: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 Bonne journée! |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mar 20 Sep 2016 - 22: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 - 22:39, édité 1 fois |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mar 20 Sep 2016 - 22:30 | |
| Ici le programme principal, celui du constructeur.basDonc 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 - 10:07, édité 6 fois |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mar 20 Sep 2016 - 22: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/2016Voir 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 - 0:30, édité 3 fois |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mar 20 Sep 2016 - 22: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 - 0:32, édité 6 fois |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mar 20 Sep 2016 - 22: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! 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 J'ai pas pensé, mais le plus simple, est de faire un programme avec HVIEWER, et de charger le fichier. - Aide html:
<HTML> <HTML> <HEADER><TITLE>Débogueur_Cosmos70</TITLE></HEADER> <BODY>
<H1>Débogueur pour Panoramic</H1> Celui-ci se compose de trois programmes.<br> <B>Constructeur.bas</B> Celui-ci est appelé par votre programme. Comment:<br> Par l'ajout de 2 lignes placées dans les première lignes, mais le seconde doit-être mise sur la <B>sixième ligne</B> C'est celle qui force votre programme a utiliser le débogueur par la commande <B>CHAIN</B> de Panoramic, et c'est la sixième ligne qui sera ensuite transformée pour ne pas que le programme tourne en boucle.
La ligne qui vient avant, entre la première et la dernière ligne, c'est celle qui permet au débogueur de lire un fichier contenant les chemins de votre programme.<br><br> <U>Donc en récapitulation:</U><br> <OL> <LI>Faire un fichier texte, avec l'extension txt ou ini ou autre, qui contient les lignes de votre programme, selon le modèle suivant: <I>c:\Mon_dossier\mon_programme.bas<br> c:\Mon_dossier\Ajout_ou_include.bas<br> $$$</I><br> (A noter que si c'est un #include, il faudra mettre cette ligne en commentaire, car c'est le débogueur qui assemblera l'ensemble. La fonction CHAIN induit en erreur les directive #include. <FONT COLOR="#CC0000"><B>Sauvegardez ce fichier, et copier le chemin et le nom, pour le reporter ligne suivante.</B></FONT> <LI>Inclure la commande: <FONT COLOR="#000099"><B>Clipboard_string_copy "coller ici la sélection"</B> </FONT> <LI>Inclure à la 6ème ligne: <FONT COLOR="#000099"><B>CHAIN "Chemin\Constructeur.bas</b></FONT> <br> </OL><br>
L'installation étant faite, pour que constructeur construise les lignes, permettant de voir le cheminement des lignes de votre programme, il faut lui donner des ordres. Ce sont les commandes.<br> <br><br> <DIV ALIGN=center>A noter: <B><U>il ni a pas de casse sur les commandes suivantes.</U></B></DIV><br> Il est certainement pas nécessaire de faire un contrôle de toutes les lignes. Donc pour contrôler une zône du programme, on inclut avant:<br><br> <B><FONT COLOR="#CC0000"> PRINT "!tron_on"</FONT></B>. Il n'est pas nécessaire de se trouver dans les lignes d'une sub, ou d'un sous-programme pour inclure les commandes. Celle-ci le sont par le constructeur, qui ne fait que de suivre les ordres que vous donnez. Votre programme n'étant pas à ce moment là, en cours de fonctionnement.<br><br> <B><FONT COLOR="#CC0000"> PRINT "!tron_off"</FONT></b>. Cette commande arrète l'insertion des lignes de débogage. Evidemment, vous pouvez inclure ces deux commandes à plusieurs endroits. D'ailleurs, si vous avez des boucles qui se répètent x fois, il vaut mieux mettre <B>Print ":tron_off"</B> avant, et repartir avec <B>Print "!tron_on"</B> en dehors de la boucle.<br><br>
Seulement <B>Print "!tron_on"</B> permet juste de voir le défilement des lignes, mais pas des variables. Pour ce faire, lorsque vous cela est nécessaire, vous incluez la commande suivante:<br><br>
<B><FONT COLOR="#CC0000"> PRINT "!VAR= variable1 variable2 variable3 ..."</FONT></b>, <U>les noms étant espacés par un espace</U>. D'ailleurs, les variables dans le programme, doivent aussi avoir un espace pour pouvoir les trouver. Enfin si vous avez en exemple: <B>a$ =a$+"aute chose"</B>, si la même variable est représentée plusieurs fois sur une ligne, à partir du moment qu'elle a pu être lue une fois, ensuite, elle n'a pas besoin d'être testée. Le programme n'est pas capable de reporter chaque modification de l'une d'elle sur la même ligne. Si cela est nécessaire, alors il faudra décomposer la ligne en plusieurs commandes pour voir le résultat. à chaque fois que la variable est modifiée.<br> On peut aussi ajouter qu'il est possible de faire la commande des variables qui ne sont pas inclus dans une sub, vu que seules les variables d'une ligne sont lues. Il est bon de noter que cette commande concernant les variables peuvent être redéclarées, ce sont les besoins qui font qu'une série de celles-ci veulent être contrôlées ou non.<br> <br> <B><FONT COLOR="#CC0000"> PRINT "!note=ici une note est tapée, et vu"</FONT></b> Cette commande permet d'inclure une remarque ou autre à un endroit donné. Evidemment il faut que <B>Print "!tron_on"</B> est été placé plus plus haut.<br> <br> <B><FONT COLOR="#CC0000"> PRINT "!save=fichier"</FONT></b> Envoi un ordre de sauvegarde à un moment donné, qui pourra être revu avec <B>le programme "reçoit.bas" ou "reçoit.exe"</B>, vu que celui-ci devra être exécutable. <br> </BODY> </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.
Dernière édition par cosmos70 le Mer 21 Sep 2016 - 14:22, édité 1 fois |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mer 21 Sep 2016 - 7: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.
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Sam 24 Sep 2016 - 12:00 | |
| Cosmos70, c'est décidé je regarde ton déboggeur aujourd'hui, c'est parti... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Sam 24 Sep 2016 - 16:09 | |
| 1er compte rendu : 1) J'ai enregistré mes 3 programmes : Constructeur.bas / Envoyer_controleur.bas / Reçoit.bas2) J'ai renommer les chemins indiqués et lancé un exécutable de Reçoit.bas en Reçoit.exe3) 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.basA 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. | |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Sam 24 Sep 2016 - 16: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. |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Sam 24 Sep 2016 - 16: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 ! 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... | |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Dim 25 Sep 2016 - 22: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:
|
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Lun 26 Sep 2016 - 20: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. 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. |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Lun 26 Sep 2016 - 23: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. 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. |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mar 27 Sep 2016 - 6:53 | |
| Bonjour Cosmos70 ! Bon et bien je vais remettre tout ça à jour et je vais retester... Merci et bonne journée à tous | |
| | | Invité Invité
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mar 27 Sep 2016 - 9: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
|
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Débogueur reporté sur une autre fenêtre. Mer 28 Sep 2016 - 7:25 | |
| Merci Cosmos70, je regarderai dans le WE prochain. | |
| | | Contenu sponsorisé
| Sujet: Re: Débogueur reporté sur une autre fenêtre. | |
| |
| | | | Débogueur reporté sur une autre fenêtre. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |