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

Code : Tout sélectionner

Is_Loaded = CatchImeg(...
Debug Is_Loaded
À noter que Debug a aussi des options intéressantes 8)

- 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 '~'

Code : Tout sélectionner

Debug ~"Ligne 1\r\nLigne 2\r\nLigne 3"
:idea: 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 :?:

:wink:

Re: probleme avec 'debug"

Publié : lun. 17/oct./2016 11:12
par Kwai chang caine
On en apprend tous les jours 8O
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... 8)

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 :?:

:wink:
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

:wink:

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... :P