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

Archive.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

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

Message 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
Dernière modification par Dr. Dri le mer. 29/mars/2006 8:18, modifié 3 fois.
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message 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... :(
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Idem pour la beta 8...

Dri
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Corrigé.
Répondre