Premiers essais avec PB

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: Premiers essais avec PB

Message par Fred »

Le code est faux, mais c'est pas 'gênant' (pas de risque de plantage), tu as seulement des trous dans tes allocations donc c'est pas très optimisé.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Premiers essais avec PB

Message par Kwai chang caine »

Ouf !!!! merci Fred de m'avoir enlevé ce poids... 8)
Je me voyais mal encore tout recoder, j'ai déjà du mal à suivre les versions :wink:
Dieu a écrit :tu as seulement des trous dans tes allocations donc c'est pas très optimisé.
Si y'avait que dans mes allocations, même familliales, que j'ai des trous, ce serait pas grave.
Ma vie est pleine de trous.....je me demande même si ça en est pas carrément un :mrgreen:
Un trou noir ....béant..qui absorbe tout sur son passage

Quand à l'optimisation...comment dire...huuummm ...je laisserais le peaufinage à mes enfants...quand j'en aurais :mrgreen:

J'suis deja toujours emmerveillé de ce qu'une machine arrive à faire avec ce que je lui ecrit ... 8O
Alors je vais quand même pas lui demander d'etre rapide

C'est comme pour les filles....moi je faisais un choix draconnien.....je prenais "EXCLUSIVEMENT" celles qui disait "oui" :D
En d'autres mots ...je suis resté seul toute ma jeunesse :mrgreen:

Encore merci pour tout Fred 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: Premiers essais avec PB

Message par Fred »

:lol:
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Premiers essais avec PB

Message par blendman »

De plus avec la 5.20 il est possible de nommer une enumeration, pour pouvoir la continuer plus tard:
Ah mais c'est excellent ça ! Par exemple,avec un logiciel dans lequel on a plusieurs fenêtres ! (genre un soft de 2D, de jeu) :D

PS : faudrait l'indiquer dans l'aide, car ça n'est pas explicité (je n'ai trouvé dans les enumeration).
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Premiers essais avec PB

Message par Backup »

@Fred

la doc dit :
Ouvre une nouvelle fenêtre avec les paramètres spécifiés. Si #PB_Any est utilisé pour le paramètre '#Fenetre', le numéro de la fenêtre sera renvoyé dans 'Resultat'.
lorsque je fait

Code : Tout sélectionner

id=OpenWindow(#pb_any,10,10,320,200,"")
debug id
CallDebugger
j'obtiens comme numero de fenetre :3680488 (a ce moment du test.. bien sur le nombre est variable a chaque lancement )


si j'avais utilisé l"enumeration

Code : Tout sélectionner

Enumeration 3680488
#win 
Endenumeration
debug #win
tu aurai dis que ce numero est trop grand qu'un nombre d'espaces est pris par defaut bla bla
que ça consomme de la ram ....ou dieu c'est quoi..
(discussion ancienne sur les Enumeration )

alors que pour #Pb_Any ça te semble normal d'utiliser des indices de grande taille ...
il y a comme une incohérence dans ton discours ;)

soit ce nombre ne correspond pas contrairement a ce que laisse entendre la Doc
a l'indice de fenêtre (pour cette exemple )
soit #pb_any donne des indices trop grands ... ??
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Premiers essais avec PB

Message par G-Rom »

alors que pour #Pb_Any ça te semble normal d'utiliser des indices de grande taille ...
il y a comme une incohérence dans ton discours
Ta rien pigé. :D
#PB_Any est une constante qui indique au système interne des ID , qu'on se fiche du numéro , lui en interne va les alloué de manière automatique & optimisé.
et ce numéro , tu n'y aura pas accès , car en utilisant #PB_Any tu t'en fou.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Premiers essais avec PB

Message par graph100 »

Dobro a écrit :tu aurai dis que ce numero est trop grand qu'un nombre d'espaces est pris par defaut bla bla
que ça consomme de la ram ....ou dieu c'est quoi..
(discussion ancienne sur les Enumeration )

alors que pour #Pb_Any ça te semble normal d'utiliser des indices de grande taille ...
il y a comme une incohérence dans ton discours ;)

soit ce nombre ne correspond pas contrairement a ce que laisse entendre la Doc
a l'indice de fenêtre (pour cette exemple )
soit #pb_any donne des indices trop grands ... ??
exactement G-Rom.
@Dobro : Il y a déjà plein de topic qui expliquent le fonctionnement de #pb_any. Ça serai cool de ne pas perdre le débutant dans leurs topic de question en apportant des discussions qui n'ont rien a y faire.

Ensuite tant qu'à répondre :

L'utilisation d'un numéro autre que #pb_any, donc en utilisant la déclaration statique, PB va allouer un tableau dont les index correspondent aux numéros alloués.
C'est l'allocation statique.
Exemple : si je déclare une fenêtre avec le numéro 3, les index 0, 1, 2 sont créés aussi, même si ils sont vides.

Maintenant si tu utilises #pb_any, le système va ajouter une entrée dans sa liste dynamique, et te retourne un numéro qui n'est pas utilisé auparavant.
De plus ce numéro est choisi en dehors des amplitudes des numéros fixes.

Car il me semble complètement improbable que tu arrives, ou que tu te casses le *** à déclarer statiquement 3millions de gadgets.

Ce fonctionnement implique que si tu déclares une fenêtre avec un nombre très élevé, derrière, PB va allouer un tableau de la taille de cet index...
Du coup la mémoire va en prendre un coup, et surtout la vitesse.

Fred ou G-Rom, corrigez moi si j'ai dis une bourde :)

Maintenant PureBasic est un outil que tu utilises pour arriver à tes fins, si tu désires l'utiliser aux limites de ses fonctions, comme utiliser un marteau pour enfoncer une vis... C'est ton choix.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
squale
Messages : 22
Inscription : mer. 28/août/2013 22:30
Localisation : Strasbourg
Contact :

Re: Premiers essais avec PB

Message par squale »

@Dobro : Il y a déjà plein de topic qui expliquent le fonctionnement de #pb_any. Ça serai cool de ne pas perdre le débutant dans leurs topic de question en apportant des discussions qui n'ont rien a y faire.
C'est très gentil mais au contraire, j'avoue être plutôt impressionné par votre réactivité et on resent rapidement que vous avez tous envie d'aider et je vous en remercie grandement ! :mrgreen:
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: Premiers essais avec PB

Message par Fred »

@graph100: c'est tout bon.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Premiers essais avec PB

Message par falsam »

Fred a écrit :@graph100: c'est tout bon.
Un bon sujet pour une bonne mise au point :)
squale a écrit :Puis-je avoir un 1 pour une image et un 1 pour un gadget dans le même code ?
Squale ta question ne veut rien dire (Quoi qu'en ce moment je me méfie de l'interprétation qu'il faut donner au questions :mrgreen:) Tout ce que tu mets sur une description de fenêtre EST un gadget. Quand à la numérotation de ces gadgets et bien je ne reviendrais pas dessus. [hyène rieuse]ha ha ha[/hyène rieuse]
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Premiers essais avec PB

Message par djes »

Allez, mon grain de sel : les exemples de code avec Enumeration ou #PB_Any sont (à mon avis) trop compliqués et perturbent le débutant. D'autant que quand on fait une petite appli, qui n'a pas vocation à grandir, cela ne sert à rien ! Un simple numéro et on s'en sort très bien, et c'est d'ailleurs (je pense) pourquoi dans la doc de PB, quasiment tous les exemples (par exemple Windows.pb) utilisent l'indice 0.

Une règle simple pour s'en rappeler (que j'ai d'ailleurs en poster) : KISS -> KEEP IT SIMPLE, STUPID !!! (Que ça reste simple, imbécile !)
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Premiers essais avec PB

Message par falsam »

C'est ce que j'aime dans les gens du nord : Simplicité, gentillesse, plaisir. :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Premiers essais avec PB

Message par djes »

falsam a écrit :C'est ce que j'aime dans les gens du nord : Simplicité, gentillesse, plaisir. :)
Tu me trouves trop direct ? :?
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Premiers essais avec PB

Message par falsam »

djes a écrit :Tu me trouves trop direct ? :?
Mais non pas du tout. au contraire j'aime bien. :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Premiers essais avec PB

Message par blendman »

Puis-je avoir un 1 pour une image et un 1 pour un gadget dans le même code ?
Squale ta question ne veut rien dire. Tout ce que tu mets sur une description de fenêtre EST un gadget. Quand à la numérotation de ces gadgets et bien je ne reviendrais pas dessus
Petite rectification :
- si tu veux dire par "image" : une image (créée avec loadImage() ou createimage())> oui, tu peux avoir une image avec un numéro 1 et un gadget avec un numéro 1
- si tu veux dire par "image" : un imagegadget(), alors non, deux gadgets ne peuvent pas avoir le même numéro.

Par exemple, deux gadgets ont le même numéro :

Code : Tout sélectionner

If OpenWindow(0,0,0,200,100,"button&image",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
  ButtonGadget(0,10,10,50,20,"bouton")
  ImageGadget(0,10,30,50,50,0,#PB_Image_Border) ; pb ici > imagegadget a le même numéro que buttongadget
  
  Repeat
    
    event = WaitWindowEvent()
    
  Until event =  #PB_Event_CloseWindow
    
EndIf
Solution :
- soit tu numérote toi-même tes numéro de gadgets :

Code : Tout sélectionner

#button1 = 0
#imageGadget1 = 1

If OpenWindow(0,0,0,200,100,"button&image",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
  ButtonGadget(#button1,10,10,50,20,"bouton")
  ImageGadget(#imageGadget1,10,30,50,50,0,#PB_Image_Border)
 
  Repeat
   
    event = WaitWindowEvent()
   
  Until event =  #PB_Event_CloseWindow
   
EndIf
Soit tu utilises l'enumeration, qui va faire le travail à ta place ^^ :

Code : Tout sélectionner


Enumeration
#button1 ; vaut 0
#imageGadget1 ; vaut 1
EndEnumeration
If OpenWindow(0,0,0,200,100,"button&image",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
  ButtonGadget(#button1,10,10,50,20,"bouton")
  ImageGadget(#imageGadget1,10,30,50,50,0,#PB_Image_Border)
 
  Repeat
   
    event = WaitWindowEvent()
   
  Until event =  #PB_Event_CloseWindow
   
EndIf
Répondre