Page 1 sur 1

charger des images avec un for

Publié : mer. 29/nov./2006 11:43
par Mwoua
Bonjour à tous !

* je cherche à insérer des images (petites en taille mais nombreuses) dans mon executable. Or, se taper les :

01 : IncludeBinary "image01.png"
02 : IncludeBinary "image02.png"
03 : ....

est un peu long :? Quelqu'un voit comment faire autrement ?

* De plus (et surtout) :

Je veux ensuite n'en charger en mémoire qu'une petite quantité, mais aléatoire : la 12, la 41 et la 5 par exemple, et puis une autre fois, ... vous avez compris. les n° sont dans un tableau.

mon idée :

for i=1 to 3
CatchImage(tab(i),?tab(i))
next i

mais ça marche pas :mad: !

Ma seule solution serait-elle de toutes les charger ?

Merci à tous !

Publié : mer. 29/nov./2006 11:53
par Progi1984
Pour le premier point, fais toi une macro du genre :

Code : Tout sélectionner

Macro IncBin(Num)
 Num: IncludeBinary "imageNum.png" 
EndMacro
IncBin(01)
IncBin(02)
IncBin(03)
IncBin(04)
Normalement ca devrait marcher.

Publié : mer. 29/nov./2006 11:57
par Mwoua
ah ouai, les macros... j'avais pas pensé. merci, je vais essayer ça.

et sinon, pour mon 2ème problème :oops: ? c'est le + pénible je pense.

edit :
peut-être un GrabImage d'une grande image contenant les petites mises bout à bout... mais du coup j'utilise quand même de la mémoire pour toutes les images :twisted:

Publié : mer. 29/nov./2006 13:02
par Backup
Mwoua a écrit : peut-être un GrabImage d'une grande image contenant les petites mises bout à bout... mais du coup j'utilise quand même de la mémoire pour toutes les images :twisted:
heu! de toute façon lorsque tu fait "IncludeBinary "image01.png" "
tu consomme aussi de la mémoire vive (Ram), puisque l'image est incluse dans le prg !!
lorsque celui-ci se charge en Ram, il charge aussi les includes !! :?

si tu veut consommer un minimum de mémoire vive, va falloir, utiliser de la mémoire de masse !

c'est a dire créer des fichiers (ou une archive), et ne charger l'image qu'au moment ou t'en a besoin ! :)

mais c'est au détriment de la vitesse (+ d'accès disque)
par contre grosse économie de Ram !
lorsque c'est bien geré (pré chargement avant utilisation)

ç'est quand même rapide, on a des disques qui pédalent maintenant :D

Publié : mer. 29/nov./2006 13:09
par Mwoua
Effectivement.

Mais derrière ce problème, je me disais qu'il serait interessant de voir si l'on pouvait faire un for avec des pointeurs ou en tout cas avec des adresses mémoires :D

Merci bien en tout cas.

Publié : mer. 29/nov./2006 13:13
par Backup
Mwoua a écrit :Effectivement.

Mais derrière ce problème, je me disais qu'il serait interessant de voir si l'on pouvait faire un for avec des pointeurs ou en tout cas avec des adresses mémoires :D

Merci bien en tout cas.
pas de cette façon en tout cas, car pour faire un For-next avec des adresse , il faudrai etre sur qu'elles se suivent !!

ce qui n'est pas garanti dans les Catch*

par contre tu peut charger tes images , et faire un For-next utilisant leur index :D
mais tu n'economisera pas de Ram , puisque tout sera present en Ram :D

pareil en utilisant une adresse buffer, mais c'est se compliquer la vie pour rien :D

Publié : mer. 29/nov./2006 13:25
par Mwoua
bon bah vue que la ram est bien souvent largement suffisante, je vais me contenter d'en prendre sans me poser de question, avec un grab sur une image unique.

Ce serait bien d'avoir une fonction value() qui transformerait automatiquement un texte, ou un nombre en un format attendu par la fonction utilisée :

Code : Tout sélectionner

for i=1 to 10
    Id$="Id_"+str(i)
    MemoryAdress$="?"+str(i)

    catchimage(value(Id$),value(MemoryAdress$))

next i
voire même, du coup :

Code : Tout sélectionner

Id$="Id_"+value(i)
ou bien carrément :

Code : Tout sélectionner

Id$="Id_"+i
8)