Page 1 sur 1

[v4 beta 8] x = DrawText(x, y, "") [Corrigé]

Publié : lun. 13/mars/2006 16:55
par Dr. Dri

Code : Tout sélectionner

Dim mots.s(5)
mots(0) = "zero"
mots(1) = "un"
mots(2) = "deux"
mots(3) = "trois"
mots(4) = "quatre"

If OpenWindow(1, 0, 0, 200, 80, "DrawText Bug")
 
  Repeat
    Event = WaitWindowEvent()
   
    If Event = #PB_Event_Repaint And StartDrawing( WindowOutput(1) )
     
      DrawingMode(#PB_2DDrawing_Transparent)
     
      x = 10
      For i = 0 To 4
        x = DrawText(x, 10, mots(i)) ;exemple tout bête
      Next i
     
      mots(3) = "" ;avec une chaine nulle ca ne fonctionne plus
     
      x = 10
      For i = 0 To 4
        x = DrawText(x, 30, mots(i))
      Next i
     
      ;résultat attendu
      x = 10
      For i = 0 To 4
        DrawText(x, 50, mots(i))
        x + TextWidth(mots(i))
      Next i
     
      mots(3) = "trois " ;rétabli la situation de départ
     
      StopDrawing()
    EndIf
   
  Until Event = #PB_Event_CloseWindow
 
EndIf
Dri :x

Publié : lun. 13/mars/2006 18:45
par Good07
Bonsoir Dri.

Bon, j'ai eu du mal à comprendre ton exemple, alors je l'ai modifié à ma façon, mais ça reste dans l'esprit de la démo.

Code : Tout sélectionner

Dim mots.s(5)
mots(0)="Zéro"
mots(1)="Un"
mots(2)="Deux"
mots(3)="trois"
mots(4)="Quatre"

If OpenWindow(1, 0, 0, 200, 80, "DrawText Bug")
 
  Repeat
    Event = WaitWindowEvent()
   
    If Event = #PB_Event_Repaint And StartDrawing( WindowOutput(1) )
     
      DrawingMode(#PB_2DDrawing_Transparent)
     Debug "------------------- exemple normal -----------------"
      x = 10
      For i = 0 To 4
        x = DrawText(x, 10, mots(i)) ;exemple tout bête
        Debug x
      Next i
      mots(3) = "" ;avec une chaine nulle ca ne fonctionne plus
     Debug "------------- exemple avec chaine vide -------------"
      x = 10
      For i = 0 To 4
        x = DrawText(x, 30, mots(i))
        Debug x
      Next i
     Debug "------------- résultat attendu ----------------"
      ;résultat attendu
      x = 10
      For i = 0 To 4
        DrawText(x, 50, mots(i))
        x + TextWidth(mots(i))
        Debug x
      Next i
     
      mots(3) = "trois " ;rétabli la situation de départ
     
      StopDrawing()
    EndIf
   
  Until Event = #PB_Event_CloseWindow
 
EndIf
Effectivement quand l'instruction rencontre une chaine vide, X est égal à zéro ce qui fait que la prochaine instruction de DrawText ne se trouve plus à la suite, mais au début ce qui met une brave pagaille. :D
Décidemment Pure n'aime pas les cases de tableau vide. :(
J'ai eu aussi des problèmes d'une autre nature avec ValF... :(

Publié : jeu. 16/mars/2006 11:47
par Dr. Dri
Toujours d'actualité avec la beta 7

@Good07
En voulant tester mon code avec la beta 7 jme suis appercu qu'il en manquait un bout... c'est corrigé ^^

Dri

Publié : mer. 29/mars/2006 8:19
par Dr. Dri
Idem pour la beta 8...

Dri

Publié : mer. 29/mars/2006 17:43
par Fred
Corrigé.