Les objets en PureBasic

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Les objets en PureBasic

Message par Warkering »

Rebonjour !

Il y a longtemps que je n'ai pas posté ici ! Ça fait plaisir de retrouver la petite bande habituelle du forum français !

J'aurais une petite question pour vous cependant, afin de marquer ce retour inattendu.
Je n'ai jamais pris la peine de vérifier cette information, ayant toujours utiliser une seule grande énumération dans laquelle je me perdais.

Si nous créons un objet Image à l'emplacement 0 de l'index, peut-on créer un objet différent, par exemple un Sprite, à l'emplacement 0 ?
En clair, est-ce qu'il n'y a qu'un seul grand index, ou bien chaque catégorie d'objet possède leur propre index ?

Je vous remercie d'avance !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Les objets en PureBasic

Message par Backup »

oui !

tu peux faire

Code : Tout sélectionner

enumeration
	image.i
	fenetre.i
endenumeration

enumeration
	sprite.i
	sprite1.i
endenumeration

dans le meme listing ...

perso , je n'utilise pas ceci , je prefere une seule enumeration !
je trouve que c'est plus clair de tout regrouper.. mais il y a vraiment 2 ecoles pour ça
certains préfèrent séparer par genre :

pour ne pas se perdre , la solution c'est :

Code : Tout sélectionner

enumeration 
	; *** fenetre   <<<<<<<<<< ajouter des commentaires ou des 
	;- *** fenetre  <<<  signets :comme ça ça apparait dans les onglets	
	win1
	win2
	win3
	;***  sprite
	sprite1
	sprite2
	;***  donnee
	x.i
	y.i
	z.i
endenumeration 


style enumeration pour les Fenetre , pour les Gadget , pour les donnée perso , etc ...
:)
Dernière modification par Backup le dim. 27/mai/2012 10:19, modifié 1 fois.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Les objets en PureBasic

Message par blendman »

Après, on peut séparer en plusieurs énumérations en utilisant #PB_Compiler_EnumerationValue et elles se suivront :

Code : Tout sélectionner

enumeration
#window ; vaut 0
#image1 ; vaut 1
endenumeration

Enumeration  #PB_Compiler_EnumerationValue
#sprite1 ; vaut 2
endenumeration
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Les objets en PureBasic

Message par case »

ou

Code : Tout sélectionner

enumeration
 #blah
 #bleh
endenumeration

enumeration
 #blah2=12
 #bleh2
endenumeration
qui donnerais
#blah=0
#bleh=1
#blah2=12
#bleh2=13
Dernière modification par case le dim. 27/mai/2012 13:25, modifié 1 fois.
ImageImage
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Les objets en PureBasic

Message par dayvid »

blendman a écrit :Après, on peut séparer en plusieurs énumérations en utilisant #PB_Compiler_EnumerationValue et elles se suivront :

Code : Tout sélectionner

enumeration
#window ; vaut 0
#image1 ; vaut 1
endenumeration

Enumeration  #PB_Compiler_EnumerationValue
#sprite1 ; vaut 2
endenumeration
Exacte, c'est ce que je fais moi et c'est bien pratique :)

Edit: Question

Code : Tout sélectionner

enumeration
   image.i
   fenetre.i
endenumeration

enumeration
   sprite.i
   sprite1.i
endenumeration
Ceci ne marche pas cher moi, on ne peut mettre que des constantes dans les enumerations non ?
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Les objets en PureBasic

Message par Ar-S »

case a écrit :ou

Code : Tout sélectionner

enumeration
 #blah
 #bleh
endenumeration

enumeration
 #blah2=12
 #bleh2
endenumeration
Case,
#bleh=1

Pour ce cas je pense qu'il est plus 'propre' de faire :

Code : Tout sélectionner

enumeration
 #blah
 #bleh
endenumeration

enumeration 12
 #blah2
 #bleh2
endenumeration
Qui donne aussi
#blah=0
#bleh=1
#blah2=12
#bleh2=13


P.s : Content de te lire Warkering
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Les objets en PureBasic

Message par Ar-S »

dayvid a écrit : Ceci ne marche pas cher moi, on ne peut mettre que des constantes dans les enumerations non ?
Lis la définition d'enumération dans la doc...
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: Les objets en PureBasic

Message par Fred »

Il vaut mieux separer les enumeration et recommencer à 0 a chaque fois, car sinon il y arua de la place perdue:

Code : Tout sélectionner

Enumeration
  #Sprite1
  #Sprite2

  #Window1  
  #Window2

  #Menu1
  #Menu2
EndEnumeration
Ici, les fenetres commenceront à '2', donc les slots 0 et 1 seront inutilisés (mais alloués quand meme en memoire)
Les menus commenceront à '4', donc les slots 0, 1, 2, 3 seront inutilisés (mais alloués quand meme en memoire)
etc.

C'est pas du tout optimal, surtout quand le nombre d'objet augmente.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Les objets en PureBasic

Message par Backup »

Fred a écrit : Ici, les fenetres commenceront à '2', donc les slots 0 et 1 seront inutilisés (mais alloués quand meme en memoire).
ha... peut etre un truc a ajouter dans la doc ,
je ne pensais pas qu'il y est un allocation des Constantes inexistantes ... 8O

dans ce cas effectivement ..
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: Les objets en PureBasic

Message par comtois »

Dobro a écrit :
Fred a écrit : Ici, les fenetres commenceront à '2', donc les slots 0 et 1 seront inutilisés (mais alloués quand meme en memoire).
ha... peut etre un truc a ajouter dans la doc ,
je ne pensais pas qu'il y est un allocation des Constantes inexistantes ... 8O

dans ce cas effectivement ..
http://www.purebasic.com/french/documen ... jects.html
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Les objets en PureBasic

Message par Backup »

j'ai du mal avec la notion d'emplacement ....

lorsque je regarde comment Pb transforme un createimage en ASS
et si j'en crois la Doc

Code : Tout sélectionner

; CreateImage(2, 640, 480) ; Crée une image à l'emplacement 2
  PUSH   dword 480
  PUSH   dword 640
  PUSH   dword 2
  CALL  _PB_CreateImage_UNICODE@12

doc :
si vous utilisez la valeur 0 pour votre premier objet et la valeur 1000 pour votre deuxième objet, il y aura 1001 index de disponibles et 999 seront inutilisés, ce qui n'est pas très efficace (gâchis de mémoire vive).
cela sous entends , qu'il y a un emplacement pré-reservé ?
dans ce cas , la Ram est donc déja prise non ?

ou bien "l'emplacement" est juste un indice , dans ce cas , aucune importance de commencer a 1000

ou bien si j'en crois la doc , l'emplacement est important, dans ce cas , on est forcement limité au nombres "d'emplacement"

bref : Definir "emplacement" .... ??


de plus ... si emplacement est pré-reservé , et donc limité dans son nombre ...
comment est geré le #pb_any qui renvoie les 3/4 du temps , un nombre énorme comparé a no petit 1000 ??

beaucoup de questions n'est 'il pas ?
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Les objets en PureBasic

Message par G-Rom »

si #pb_any est utilisé , tu as un pointeur en retour
sinon , pour une fenetre tu as en retour l'équivalent d'un windowID() , ca ne renvois pas un emplacement dans une table quelquonque :

Code : Tout sélectionner

A = OpenWindow(0,0,0,1,1,"")
B = OpenWindow(#PB_Any,0,0,1,1,"")

Debug A  ;  = WindowID(0)
Debug B  ;  = Pointeur sur l'objet
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Les objets en PureBasic

Message par Backup »

oui :)

c'est cette phrase , et celle de Fred , que je met a l'index
si vous utilisez la valeur 0 pour votre premier objet et la valeur 1000 pour votre deuxième objet, il y aura 1001 index de disponibles et 999 seront inutilisés, ce qui n'est pas très efficace (gâchis de mémoire vive).
c'est surtout le rouge, que j'ai du mal a comprendre ...

je croyais que la Ram sous windows etait dynamique ( d'ou fragmentation )

ce discours tiendrai peut etre si la Ram etait geré par page .... mais l'est t'elle encore de nos jours ..?
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Les objets en PureBasic

Message par Warkering »

Merci de vos réponses.

J'utilisais la méthode de Blendman. Dorénavant, ce sera la méthode Fred !

Et oui Dobro, la mémoire est toujours paginée de nos jours, par quatre mégaoctets je crois bien. Ce serais même un peu insensé de nos jours de gérer huit gigaoctets de mémoire vive autrement.
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Les objets en PureBasic

Message par dayvid »

Content de te revoir parmis nous Warkering :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre