Page 2 sur 3

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 7:15
par Mindphazer
Kwai chang caine a écrit : Je suis content on va pouvoir enfin mettre un GOSUB dans une procedure, encore une vieille demande qui a été prise en compte.
Ca devrait simplifier certains de mes codes..merci FRED 8)
La beta 2 est sortie
http://www.purebasic.fr/english/viewtop ... 14&t=54999
Désolé KCC pour le gosub :
Gosub in procedure have been removed as it can't work for now

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 8:35
par Mesa
L’intérêt des layouts utilisés dans les 'Dialogs", c'est de ne pas mettre des width et des height... sauf quand c'est nécessaire et pour résoudre le problème de l'exemple 3, il faut donner une taille minimale au progressbar sinon il n'apparaît pas :

Code : Tout sélectionner

<?xml version="1.0"?>

<!-- Window -->
<window id="0" name="hello" text="Window" label="TestDialog" width="620" height="10" flags="#PB_Window_SizeGadget|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget">
   <splitter width="600" height="600">
     <hbox>
      <checkbox name="checkbox1" text="Run only one Instance" disabled="yes" Flags=""/>
      <progressbar text="Vrey vreyv rye" width="150"/>
      <trackbar text="Ole" invisible="no" Flags="#PB_TrackBar_Ticks" width="150"/>
      <option text="option 1" name="option1" onevent="CheckBoxEvent()"/>
      <option text="option 2"/>
     </hbox>
     <vbox>
      <listview text="option 3" height="50"/>
      <button text="Ole 2"/>
      <listicon text="option 4" height="50"/>
      <string text="string content"/>
      <editor text="editorgadget" height="50"/>
      <text text="Text gadget"/>
     </vbox>     
   </splitter>
</window>
Mais, j'ai beau changer la taille du splitter, le résultat reste encore bizarre.

Mesa.

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 10:28
par Fred
C'est pas étonnant que les resultats soient encore faux, car cette lib est tres complexe, elle va se stabiliser avec vos rapports de bugs, donc n'hesitez pas à poster sur le forum anglais.

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 13:14
par blendman
clipsprite() ne serait-il pas buggué ?

Car sur ce code, normalement la surface devrait s'étendre et en fait c'est l'intérieur qui change de taille :

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard() = 0 Or UsePNGImageDecoder() = 0 
  MessageRequester("Error", "Sprite system can't be initialized", 0)
  End
EndIf

win= OpenWindow(#PB_Any, 0, 0, 610, 410, "PB 5.20b - Sprite alphablending",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 If win 
  OpenWindowedScreen(WindowID(win), 5, 5, 600, 400, 0, 0, 0, #PB_Screen_NoSynchronization)

  LoadSprite(0, "Data/but.png",#PB_Sprite_AlphaBlending)
  
  Repeat
    event = WindowEvent()
    FlipBuffers()
    
    ClearScreen(RGB(200,200,200))

    ClipSprite(0, x, x, 250+x,100)     
    DisplayTransparentSprite(0, 50, 100)
    
    If x <250
      x+1
    Else 
      x= 0
    EndIf    
    
    ExamineKeyboard()
    Delay (10)
 Until KeyboardPushed(#PB_Key_Escape) Or event = #PB_Event_CloseWindow
   
Else
  MessageRequester("Error", "Error", 0)
EndIf

End   

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 13:16
par Fred
Tu peux mettre ton image en download ?

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 14:59
par Micoute
Fred a écrit :C'est pas étonnant que les resultats soient encore faux, car cette lib est tres complexe, elle va se stabiliser avec vos rapports de bugs, donc n'hesitez pas à poster sur le forum anglais.
Le problème, c'est que je n'arrive même pas à m'inscrire !

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 16:07
par Micoute
Merci beaucoup monsieur Spock, mais ça n'a pas été trop facile de s'inscrire !

Re: La v5.20 Beta 1 est sortie

Publié : sam. 22/juin/2013 17:49
par blendman
Fred a écrit :Tu peux mettre ton image en download ?
et hop voici l'image :
Image

Re: La v5.20 Beta 1 est sortie

Publié : mar. 25/juin/2013 21:34
par Kwai chang caine
Mindphaser a écrit :La beta 2 est sortie
Désolé KCC pour le gosub :
Merci de l'info...y'avait une fonction que j’étais vraiment content...si j'avais autant de chance au LOTO... :(
Quand je pense que je viens d'ecrire que FRED avait deja fait l'effort du GOSUB, alors si il pouvait un jour faire comme le D une procedure dans une autre......
Je crois que je peux dors et déjà me la mettre sur l'oreille, parce que le GOSUB ça doit être de la roupie de sansonnet par rapport à une procédure imbriquée :(

Re: La v5.20 Beta 1 est sortie

Publié : mer. 26/juin/2013 17:07
par Patrick88
procedure dans une autre procedure, comme en pascal je suppose ?

Patrick

Re: La v5.20 Beta 1 est sortie

Publié : mer. 26/juin/2013 20:41
par G-Rom
Une procédure imbriqué ? je ne vois pas l’intérêt , si on pouvait m'expliqué , même en C/C++ ca n'existe pas 8O

Re: La v5.20 Beta 1 est sortie

Publié : dim. 30/juin/2013 15:09
par Kwai chang caine
Oui PASCAL le fait
Les procédures imbriquées sont supportées en D et dans certains C, mais pas tous.
http://fr.wikipedia.org/wiki/Fonction_imbriqu%C3%A9e

En fait c'est super utile quand une fonction n'est utilisée que par une autre, elle n'a donc pas besoin d’être publique.
Ca permet aussi pour simplifier le code, comme par exemple dans une enumeration ou pourrait ecrire une seule procédure au lieu de s'en trimbaler deux, une principale et une autre qui se balade dans le code qui ne dépend que de sa procédure mère
Dans les codes ça simplifierait drolement la clarté, quand tu copie une procédure tout ce que tu as besoin est dedans si ça ne sert qu'a elle.
Dans certains cas les API ne savent être utilisées qu'en pointant une autre procédure, c'est le cas non isolé de "EnumWindows_"

Comme dans ce code que j'ai modifié à l'arache..et qui marche évidement pas

Code : Tout sélectionner


Structure result
  hWnd.i
  String.s
EndStructure

Procedure.s EnumereProcess()

  Procedure EnumWindowsProc(hWnd, *lParam.result)
   Protected Title.s{260}
   GetWindowText_(hWnd, @Title, 260)

   If FindString(Title, *lParam\String)
     *lParam\String = Title
     *lParam\hWnd = hWnd
     ProcedureReturn #False
   EndIf

   ProcedureReturn #True

  EndProcedure

  Define param.result 
  param\String = " 5.10 ("
  
  If Not EnumWindows_(@EnumWindowsProc(), @param)
    ProcedureReturn "Found: " + param\String + " with hWnd: " + Str(param\hWnd)
  EndIf

EndProcedure
Mais apparemment FRED a deja des problemes avec juste un gosub, et il parait que c'est compliqué a gerer les variables d'une procedure locale, alors c'est mal barré :(

Re: La v5.20 Beta 1 est sortie

Publié : dim. 30/juin/2013 18:32
par Fred
Kwai chang caine a écrit :Mais apparemment FRED a deja des problemes avec juste un gosub, et il parait que c'est compliqué a gerer les variables d'une procedure locale, alors c'est mal barré :(
Si j'ai enlevé le gosub, c'est qu'il y'a une très bonne raison, si c'etait facile je l'aurai inclu. Alors tes remarques du genre "Fred, il a un probleme avec un simple gosub", tu peux te les garder, merci. Surtout que ca n'a rien à voir avec les procédures imbriquées (qui sont pour moi une aberration, mais passons).

ps: c'est pas en répétant dans tous tes posts: "et le GIF ca en est où", "toujours pas de gosub dans une procédure" que ca va me mettre la pression, alors évite d'en faire des tonnes, car là ça commence à me gaver menu.

Re: La v5.20 Beta 1 est sortie

Publié : dim. 30/juin/2013 19:25
par G-Rom
Kwai chang caine a écrit :Oui PASCAL le fait
Les procédures imbriquées sont supportées en D et dans certains C, mais pas tous.
http://fr.wikipedia.org/wiki/Fonction_imbriqu%C3%A9e

En fait c'est super utile quand une fonction n'est utilisée que par une autre, elle n'a donc pas besoin d’être publique.
Ca permet aussi pour simplifier le code, comme par exemple dans une enumeration ou pourrait ecrire une seule procédure au lieu de s'en trimbaler deux, une principale et une autre qui se balade dans le code qui ne dépend que de sa procédure mère
Dans les codes ça simplifierait drolement la clarté, quand tu copie une procédure tout ce que tu as besoin est dedans si ça ne sert qu'a elle.
Dans certains cas les API ne savent être utilisées qu'en pointant une autre procédure, c'est le cas non isolé de "EnumWindows_"

Comme dans ce code que j'ai modifié à l'arache..et qui marche évidement pas

Code : Tout sélectionner


Structure result
  hWnd.i
  String.s
EndStructure

Procedure.s EnumereProcess()

  Procedure EnumWindowsProc(hWnd, *lParam.result)
   Protected Title.s{260}
   GetWindowText_(hWnd, @Title, 260)

   If FindString(Title, *lParam\String)
     *lParam\String = Title
     *lParam\hWnd = hWnd
     ProcedureReturn #False
   EndIf

   ProcedureReturn #True

  EndProcedure

  Define param.result 
  param\String = " 5.10 ("
  
  If Not EnumWindows_(@EnumWindowsProc(), @param)
    ProcedureReturn "Found: " + param\String + " with hWnd: " + Str(param\hWnd)
  EndIf

EndProcedure
Mais apparemment FRED a deja des problemes avec juste un gosub, et il parait que c'est compliqué a gerer les variables d'une procedure locale, alors c'est mal barré :(
Oui , je ne suis pas convaincu , si c'est pour "caché" des procédures , le c++ est mieux pensé avec ses membres & méthode privé.
Pour le gosub , vois avec Fred avant qu'il prenne des champis, ooops , trop tard , il en à mangé... :mrgreen:

Re: La v5.20 Beta 1 est sortie

Publié : dim. 30/juin/2013 19:31
par SPH
Ne me dites pas que les GOSUB vont disparaitre ?? 8O