Page 1 sur 1
probleme avec 'debug"
Publié : dim. 16/oct./2016 22:18
par case
au départ je pensais avoir un problème avec include binarie / catch image
mais c'est plutôt un problème avec la commande debug
est-ce normal il ne me semble pas que ce fut le cas auparavant
Code : Tout sélectionner
UsePNGImageDecoder()
w=OpenWindow(#PB_Any,0,0,640,480,"prg",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
Enumeration
#BGPIC
#CANVAS
EndEnumeration
Debug CatchImage(#BGPIC, ?BG) ; <--------------- n'est pas exécuté lorsque le debugger est desactivé ou en create executable du coup l'image n'est pas catchée
CanvasGadget(#CANVAS,0,241,640,240)
StartDrawing(CanvasOutput(#CANVAS))
DrawImage(ImageID(#BGPIC),0,0)
StopDrawing()
t=ElapsedMilliseconds()
Repeat
WaitWindowEvent(0)
Until ElapsedMilliseconds()-t>=3000
End
DataSection
bg:
IncludeBinary "logo.png"
EndDataSection
Re: probleme avec 'debug"
Publié : dim. 16/oct./2016 22:45
par Ar-S
C'est le but du debug ou j'ai rien pigé à ton soucis ?
Re: probleme avec 'debug"
Publié : dim. 16/oct./2016 22:47
par falsam
Hello Case.
case a écrit :il ne me semble pas que ce fut le cas auparavant
J'ai essayé avec la version 4.40 qui ne connait pas le canvasgadget mais que j'ai remplacé par un imagegadget. CatchImage() ne fonctionne pas si l'option debug est désactivé tout comme dans la dernière version de Purebasic.
A priori, ce qui suit derrière la fonction Debug n'est pas pris en compte jusqu'à la prochaine instruction bien sur ^^.
Re: probleme avec 'debug"
Publié : lun. 17/oct./2016 1:22
par case
ok j'avais jamais remarqué auparavant bon a savoir...pourtant explicite ds la doc...
comme quoi je ne termine pas souvent mes projets ou que j'ai eu du bol ^^
debug
Affiche la fenêtre DebugOutput et le résultat correspondant. L'expression peut être toute expression valide en PureBasic, de forme numérique ou chaine. Un point important est que toute commande Debug et les expressions associées sont totalement ignorées (non compilées) si le débogueur est désactivé. Cela singifie qu'il n'est pas nécessaire de passer les instruction Debug en commentaires lors de la création de l'exécutable final tout en ayant la possibilité de tracer facilement l'exécution du programme pour le développeur.
Re: probleme avec 'debug"
Publié : lun. 17/oct./2016 7:30
par Marc56
On se fait toujours avoir à un moment en mettant une commande après Debug au lieu de mettre juste un résultat
La bonne méthode
À noter que Debug a aussi des options intéressantes
- Il fait un
transtypage automatique des valeurs numériques en chaines si la ligne commence par une chaine.
Pas besoin de mettre des Str() autour des valeurs numériques
Code : Tout sélectionner
Debug 1 ; <--- OK
Debug 1 + " deux" ; <--- Cette ligne va provoquer une erreur car il lui faut un Str() si mixé avec une chaine
Debug "" + 1 + " deux" ; <--- Pas celle-là car elle commence par une chaine :-)
- Il Supporte les
codes d'échappement (\n\r etc) comme en C en utilisant la chaine commencée par un tilde '~'

Ce qui serait bien (mais je ne sais pas si c'est possible?) serait de pouvoir annuler le saut de ligne final, pour pouvoir ainsi mettre le résultat de plusieurs Debug sur une seule ligne (un peu comme Print et PrintN de la lib Console) avoir par exemple un DebugNoLn

Re: probleme avec 'debug"
Publié : lun. 17/oct./2016 11:12
par Kwai chang caine
On en apprend tous les jours
Je ne me suis jamais rendu compte de ça, car je ne laisse jamais traîner de debug.
Mais c'est bon à savoir au cas ou...

Re: probleme avec 'debug"
Publié : lun. 17/oct./2016 12:20
par Zorro
Marc56 a écrit : serait de pouvoir annuler le saut de ligne final, pour pouvoir ainsi mettre le résultat de plusieurs Debug sur une seule ligne (un peu comme Print et PrintN de la lib Console) avoir par exemple un DebugNoLn

ben tu peux, il suffit de coller tes variables
debug Var1+" "+str(var2.i)+" "+var3.s
Re: probleme avec 'debug"
Publié : lun. 17/oct./2016 13:28
par JohnJohnsonSHERMAN
Tiens... à ce propos : le comportement du caractére d'échappement \b (retour arriére) est étrange non? Regardez :
Code : Tout sélectionner
OpenConsole("Test")
PrintN( "Ceci est une ligne de texte...")
PrintN( "...qui continue à la ligne.")
PrintN( "Et celle ci ?")
PrintN( ~"\b\b\b\b\b\b...Est-elle à la ligne? Une tabulation? \tOui!\nLà on est passé à la ligne... Ici est écrit Sher42\b\bman sans 42.")
Input()
[quote"La console"]Ceci est une ligne de texte...
...qui continue à la ligne.
Et celle ci ?
...Est-elle à la ligne? Une tabulation? Oui!
Là on est passé à la ligne... Ici est écrit Sherman sans 42.
[/quote]
Malgré tous les \b, le texte ne "remonte" pas avant un \n inséré par PrintN()...
C'est quand même bizarre que le \b ne puisse pas remonter avant un \n.. En C ca le fait trés bien pourtant.
Code : Tout sélectionner
#include <stdio.h>
int main()
{
printf("Ceci est écrit sur la même ligne que \n\b ceci... Non?\n");
return 0;
}
Re: probleme avec 'debug"
Publié : lun. 17/oct./2016 13:46
par Marc56
Le mode console de PB n'est pas un simple appel du shell (command.com / cmd.exe ou $Term) de l'OS et la gestion des chaines étendues n'est
pas (je crois) une simple encapsulation de la commande
printf. Tous les codes de contrôle ne sont donc pas présents.
Si tu veux positionner exactement un curseur, utilises
ConsoleLocate

Re: probleme avec 'debug"
Publié : lun. 17/oct./2016 14:18
par JohnJohnsonSHERMAN
Je sais bien que ce n'est pas une copie de la fonction printf... C'est juste que je trouve bizarre que le caractére d'échappement \b fonctionne sauf quand il doit retourner sur un retour ligne \n... Evidemment avec locate, on peut mettre le curseur où l'on veut, mais c'est plus simple de le fiare (a mon gout) avec un \b...
