Bonsoir,
Principe du programme:
Une fois installée, pour déboguer le programme, on lance
constructeur.bas depuis Panoramic_Editor ou
constructeur.exe.
Une fois ouvert, on a un memo qui est ouvert pour y mettre en première ligne le
chemin avec le
nom du programme à voir , suivi éventuellement par les includes (ceux-ci étant mise en commentaire), puis ligne suivante :
$$$ . Si il y a eu des modifications, il faut penser en premier à sauvegarder ce fichier. Il est important de savoir que le programme à déboguer doit avant être sauvegardé. C'est la version sauvegardé qui sera suivie par le débogage.
Normalement si tout est fait correctement, vous devriez avoir une
aide au format html . Pour l'instant elle n'a pas été reprise (manque de temps), mais elle montre comment insérer les commandes dans le programme.
Une chose importante:
Ce programme ne sait utiliser que KGF.dll . Je ne sais pas comment il faudrait procéder pour intervenir dans un programme inconnu, avec différentes DLL, puisque Panoramic ne peut utiliser qu'une dll à
la fois. Quant aux librairies, je ne connais pas bien le principe.
Voici un exemple de ce que vous devriez obtenir:
En cliquant sur
Lancer débogueur , le programme refait un second programme dans lequel seront incluses des lignes pour apporter les informations qui seront transmises ensuite à une autre fenêtre qui fera la réception des envoies. Pour ces actions, il n'y aura aucun évènemment de sollicité. Ceci a été voulu, afin que des erreurs de répétitions n'apparaissent pas. Des testes ont été effectués avec un timer, et celui-ci n'a pas pertubé le programme.
Important:
Il est bon de savoir ce qu'on fait avec les timers pour le suivi des lignes. Lorsqu'on exécute un évènement, on le suit à la trace, puis lorsqu'elle est exécutée, le programme se met en attente d'un autre évènement. Cela peut donner en exemple: la réception suivante:
Mais si on a un timer, et qu'on ne pense pas à bloquer les procédures qui sont appelées par celui-ci, on risque de ne pas voir grand chose d'intéressant, car celui-ci (surtout si l'interval est court), se répète indifiniment, et finalement on ne voit que le code du timer. En exemple le programme suivant avec des commandes inclues:
- Code:
-
' teste avec timer
left 0,screen_x-380 : width 0,270
label clic , boucle , control
dim a$ , clic% , a% , b% , xx%
list 10:top 10,50 : width 10,150:height 10,200 : on_click 10,clic
alpha 11:left 11,100 : font_size 11,12 : font_bold 10
button 12:caption 12,"boucle" : on_click 12,boucle
' on active les commandes ( une seule commande par ligne
print "!tron_on"
' déclaration des variables à suivre
print "!var= a$ a% b% "
repeat
read a$
if a$ <> "$" then item_add 10,a$
until a$ = "$" or scancode = 27
timer 20:timer_interval 20,500 : on_timer 20,control
end
' ===========================================
data salade,"pomme de terre",carotte,"épinard",radis,choux,lentille,fraise
data $
clic:
' visibilité des items
print "!list(10)>20"
' voir les items 2 à 4
print "!list(10)2,4"
a$ = item_index$(10)
caption 11,a$
return
' ---------------------
boucle:
timer_off 20
' limiter la lecture sur une boucle (se que fait print "!tron_boucle_on"
print "!tron_boucle_on"
caption 0,"Début"
for a% = 1 to 10000
' suivre la valeur de a%, et pouvoir stopper la boucle par le bouton STOP
print "!> a%"
b% = b% +1
next a%
' retire la restriction sur une boucle, les lignes sont de nouveau transmises.
print "!tron_boucle_off"
caption 0,"FIN"
timer_on 20
return
' ----------------------------
control:
xx% = xx% +1
xx%=1
' occupation instantanée pour voir si le timer interragit sans poser de problème
return
Le timer hors évènement ne chômant pas, voici ce qu'on reçoit:
Ce n'est pas ce qu'on cherche à moins qu'on veuille tester ce code.
Pour ce faire, dont il convient d'inclure avant le code du timer, la commande suivante:
PRINT "!TRON_OFF" , et si nécessaire rétablir après le code d'un timer:
PRINT "!TRON_ON" Le mieux serait de mettre toutes les sub concernant les timers en dernier dans le source du programme. Ainsi on mettrait juste:
print "!tron_off" avant les sub du/des timers.
-----------------------------------------
Dans le programme
reçoit.bas , vous remarquerez le bouton
« STOP » :
rappel du s/prg: boucle:
boucle:
timer_off 20
' limiter la lecture sur une boucle (se que fait print "!tron_boucle_on"
print "!tron_boucle_on"
caption 0,"Début"
for a% = 1 to 10000
' suivre la valeur de a%, et pouvoir stopper la boucle par le bouton STOP
print "!> a%"
b% = b% +1
next a%
Comme vous remarquerez, avant d'appeler la boucle
for a%=1 to 10000 , j'ai ajouté l'instruction: print "!tron_boucle_on", qui a pour effet, d'éviter le listage des lignes, car 10000 fois sortir celui-ci, ce n'a pas de sens, et ralenti lourdement le programme.
Par contre entre for a%... et next a%, j'ai inséré:
print "!> a%" . Cela me permet à aprtir du bouton stop, d'arréter le programme, dans le cas où celui-ci tournerait en boucle pour une raison ou une autre, et en même temps je peux savoir quelle valeur a la variable a%. Ensuite soit vous arrétez le programme, soit vous continuez.
-----------------------------------------------------------------
Je me suis arrêté là, ayant plein de choses à faire en urgence avant l'arrivé du froit, ce tiquet je l'ai préparé en 5/6 fois faute de temps, et je ne sais plus très bien si j'ai tout dit.
Si ce programme vous intéresse, asseyez de voir assez rapidement si tout se passe bien. J'ai encore l'aide html à mettre à jour. Je ne suis plus très sure d'avoir la possibilité de pouvoir répondre après. J'ai des décisions à prendre. J'ai copié le texte et les images pour transmettre à partir de Linux. J'espère ne pas mettre trompé dans le choix des images. L'écran n'étant pas bien grand.