Page 2 sur 2
Re: Les objets en PureBasic
Publié : dim. 27/mai/2012 22:58
par Backup
Warkering a écrit :
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.
ha ? , il m'avait pourtant semblé que la pagination ne touchait que la memoire virtuel ..
La mémoire virtuelle= "la réunion de la mémoire physique (RAM) et des fichiers de pagination (SWAP, pagefile.sys)"
mais que la Ram ( meme 8 go ) n'etait pas paginé ...

.. mais bon ... me trompais-je peut etre..
Re: Les objets en PureBasic
Publié : lun. 28/mai/2012 8:28
par blendman
Warkering a écrit :J'utilisais la méthode de Blendman. Dorénavant, ce sera la méthode Fred !
en fait, moi, j'ai toujours utilisé la méthode de Fred

, c'est à dire de commencer pour chaque nouveau type d'objet d'objet à zéro (sprite, image, window, gadget, etc...).
Car il y a effectivement ça de noter dans la doc :
Etant donné que c'est 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 pour cette raison qu'il faut autant que possible utiliser une indexation sequentielle, qui commence à partir de 0.
La méthode que j'indiquai peut être utile pour créer plusieurs énumération qui se suivent, mais pour un même type d'objet

.
Re: Les objets en PureBasic
Publié : lun. 28/mai/2012 10:44
par Fred
Les objets indexés sont gérés avec des tableaux: de 0 à 1000, ca fait 1000 cases -> donc si tu utilise le chiffre 1000 directement pour ton objet, les 999 premieres sont vides (mais allouées quand meme).
Pour #PB_Any, c'est complement différent, c'est directement un pointeur vers l'objet qui est renvoyé (alloué dynamiquement).
Re: Les objets en PureBasic
Publié : lun. 28/mai/2012 14:37
par Backup
merci pour ces précisions
petite derniere ... pourquoi avoir utilisé un tableau , et pas une liste (ou map)( question de grand Naïf ) ?

Re: Les objets en PureBasic
Publié : lun. 28/mai/2012 22:10
par graph100
ca doit être bcp plus rapide car l'accès se fait sans calcul.
j'ai une autre question pour fred sur les #pb_any, les index pris par le retour de pb_any ne peuvent pas être utilisé comme numéro d'objet ?
comment ça se fait que les deux méthodes puissent coexister avec les mêmes méthodes d'accès de la part de l'utilisateur ?
(si j'ai bien compris, même un objet normal par ex d'index 1 a un index pb_any qui pointe dessus non ?)
Re: Les objets en PureBasic
Publié : mar. 29/mai/2012 9:13
par Mesa
Peut-on créer une liste exhaustive ?
Code : Tout sélectionner
Enumeration ; Fenêtres
EndEnumeration
Enumeration ; Menus
EndEnumeration
Enumeration ; Gadgets
EndEnumeration
Enumeration ; Images
EndEnumeration
Enumeration ; Sprites
EndEnumeration
sprite3D ?
Quoi d'autre ?
Mesa.
Re: Les objets en PureBasic
Publié : mar. 29/mai/2012 10:02
par Backup
Mesa a écrit :Peut-on créer une liste exhaustive ?
sprite3D ?
Quoi d'autre ?
Mesa.
Non pas vraiment , car il existe des centaines de raison d'utiliser les enumerations
je pense notamment au instruments Midi par exemple

Re: Les objets en PureBasic
Publié : mar. 29/mai/2012 10:43
par dayvid
Ce code de Mesa est plutôt propre je trouve !
Code : Tout sélectionner
Enumeration ; Fenêtres
EndEnumeration
Enumeration ; Menus
EndEnumeration
Enumeration ; Gadgets
EndEnumeration
Enumeration ; Images
EndEnumeration
Enumeration ; Sprites
EndEnumeration
Et sinon, ceci est-il possible ?, Normalement oui !
A moins que je n'est rien compris
Code : Tout sélectionner
Enumeration ; Fenêtres
#Fenetre1
#Fenetre2
#Fenetre3
EndEnumeration
Enumeration ; Menus
#Menu1
#Menu2
#Menu3
EndEnumeration
Enumeration ; Gadgets
#Gadget1
#Gadget2
#Gadget3
EndEnumeration
Enumeration ; Images
#Image1
#Image2
#Image3
EndEnumeration
Enumeration ; Sprites
#Sprite1
#Sprite2
#Sprite3
EndEnumeration
Debug #Fenetre1
Debug #Fenetre2
Debug #Fenetre3
Debug #Menu1
Debug #Menu2
Debug #Menu3
Debug #Gadget1
Debug #Gadget2
Debug #Gadget3
Debug #Image1
Debug #Image2
Debug #Image3
Debug #Sprite1
Debug #Sprite2
Debug #Sprite3
Re: Les objets en PureBasic
Publié : sam. 09/juin/2012 9:25
par meganet
Bonjour,
j'aurais 2 petites questions.
Si chaque type d'objet à son propre tableau, peut-on avoir accès à celui-ci pour avoir par exemple la liste des fenêtres, des menus, etc?
Cela pourrait s'avérer pratique par exemple dans une fonction de gestion d'erreur pour fermer tous les fichiers, fenêtres ou autres ouvert précédemment sans en oublier.
Et si j'ai bien compris, avec #PB_ANY, c'est un pointeur sur l'objet créé dynamiquement qui est renvoyé. Mais est-ce qu'il y a aussi une référence sur cette objet ajouté dans le tableau associé ou pas du-tout?
Bonne journée à tous.
Re: Les objets en PureBasic
Publié : mar. 12/juin/2012 14:27
par minirop
Je vois rien dans la doc qui le permettrait, genre windowGreatestID() par exemple. mais ça pourrait être une bonne idée, ça éviterait de gérer soi-même un tableau de pointeur et donc faire :
Code : Tout sélectionner
For i = 0 To windowGreatestId()
If IsWindow(i)
// faire qq chose avec WindowId(i)
EndIf
Next
Pour la deuxième question, aux vues des réponses précédentes, la réponse est "pas du tout". Pour faire simple, ça pourrait ressembler à :
Code : Tout sélectionner
Procedure OpenWindow(id)
If id == #PB_Any
ProcedureReturn AllocateMemory(10)
Else
ptr = AllocateMemory(10)
cache(id) = ptr
ProcedureReturn id
EndIf
EndProcedure
Re: Les objets en PureBasic
Publié : mar. 12/juin/2012 23:38
par meganet
Je ne trouves pas ça très cohérent. Pourquoi ajouter l'identifiant d'un fichier par exemple, créé avec un index et pas celui créé dynamiquement dans le tableau de fichier?
ça permettrai justement de garder une trace de chaque objet initialisé.
Pour la deuxième question je n'ai rien trouvé non plus dans la doc justement.
D'où ma question peut-on accédé à ces tableaux ça éviterai d'avoir à créer un tableau manuellement. Pourquoi recréer un deuxième tableau si un existe déjà.
Re: Les objets en PureBasic
Publié : mer. 13/juin/2012 16:06
par Backup
a la reflexion , il ne m’étonnerai pas que ce soit du au fait que le compilateur
Purebasic soit une seule pass
du coup , il ne doit pas pouvoir remettre tout en ordre avant compilation ..
faudrai que Fred nous informe la dessus

Re: Les objets en PureBasic
Publié : mer. 13/juin/2012 16:13
par Le Soldat Inconnu
Zut alors, moi je groupe toutes mes énumérations en une seule
Je ne pensais pas que ça fonctionnait de la sorte, va falloir que je reprenne ça
