Page 1 sur 1

attribution variables ou....?

Publié : mar. 17/janv./2006 12:58
par david
j'ai adapté le source ci-après pour 'lister' tous les fichiers JPG d'un repertoire specifique et il me donne le nombre. Mais...

en fait, ce que je veut réellement c'est garder dans des variables distinctes chaque nom de fichier (et non pas une liste ou alors comment les ré-extraire de la liste)
je voudrais ensuite que mes variables soient utilisées ALEATOIREMENT pour m'afficger le nom du fichier (exemple chaque appuye sur espace afficher MESSAGEREQUESTER ("titre",nom-de-fichier-au-hazard$)

comment faire?
merci d'avance pour les renseignements je debute

Publié : mar. 17/janv./2006 13:25
par AWEAR
Une fois que tu a tous tes noms de fichier dans la liste, tu fais
selectelement(nomdetalistechainee(),
random(countlist(nomdetalistechainee())))
MESSAGEREQUESTER ("titre",nomdetalistechianee())

Publié : mar. 17/janv./2006 18:57
par david
j'avais oublié de mettre le programme
ta réponse à l'air claire, je ne parviens pourtant pas à l'inclure dedans (viens peut-etre du fait que la liste chainee n'est pas reellement crée mais est seulement ajouté dans listGagdget à l'afficgage?)
comment je peux faire???

ci-pares le debut du prog:
compteur=0
If OpenWindow(0, 100, 200, 290, 200, #PB_Window_SystemMenu, "PureBasic - FileSystem Example")

If CreateGadgetList(WindowID())
StringGadget (0, 10, 10, 202, 24, "")
SetGadgetText (0, "C:\Documents and Settings\David\Mes documents\Mes images\Gabrielle")
; ButtonGadget (1, 220, 10, 60 , 24, "List")
ListViewGadget(2, 10, 40, 270, 150)
EndIf

Repeat
EventID = WaitWindowEvent()

If EventID = #PB_Event_Gadget
; If EventGadgetID() = 1 ; Read

ClearGadgetItemList(2) ; Clear all the items found in the ListView

If ExamineDirectory(0, GetGadgetText(0), "*.*")

Repeat

FileType = NextDirectoryEntry()
If FileType
FileName$ = DirectoryEntryName()
If FileType = 2 ; REPERTOIRE ET NON FICHIER!
FileName$ = "NON-FICHIER"
EndIf
If FileName$ <> "NON-FICHIER"
compteur=compteur+1
AddGadgetItem(2, -1, FileName$)

EndIf
EndIf

Until FileType = 0

Else
MessageRequester("Error","Can't examine this directory: "+GetGadgetText(0),0)
; EndIf

EndIf
EndIf

Until EventID = #PB_Event_CloseWindow

EndIf
compteur$=Str(compteur)
MessageRequester("resultat",compteur$)


End

Publié : mar. 17/janv./2006 19:08
par Backup
viens peut-etre du fait que la liste chainee n'est pas reellement crée
et c'est rien de le dire ! :lol:

regarde dans l'aide a LinkedList !!! tu saura ce qu'es une liste chainée !!

Publié : mar. 17/janv./2006 20:32
par AWEAR
Bon voilà, j'ai repris ton code (qui pourrais être amélioré, mais c'est pour l'exemple), et la ca marche comme tu le veux (si j'ai bien compris)

Code : Tout sélectionner

compteur=0 
NewList liste.s()
If OpenWindow(0, 100, 200, 290, 200, #PB_Window_SystemMenu, "PureBasic - FileSystem Example") 

If CreateGadgetList(WindowID()) 
StringGadget (0, 10, 10, 202, 24, "") 
SetGadgetText (0, PathRequester("", "")) 
; ButtonGadget (1, 220, 10, 60 , 24, "List") 
ListViewGadget(2, 10, 40, 270, 150) 
EndIf 

Repeat 
EventID = WaitWindowEvent() 

If EventID = #PB_Event_Gadget 
; If EventGadgetID() = 1 ; Read 

ClearGadgetItemList(2) ; Clear all the items found in the ListView 
ClearList(liste())
compteur = 0
If ExamineDirectory(0, GetGadgetText(0), "*.*") 

Repeat 

FileType = NextDirectoryEntry() 
If FileType = 1 And Right(DirectoryEntryName(), 4) = ".jpg"
filename$ = DirectoryEntryName()
compteur=compteur+1 
AddElement(liste())
liste() = filename$
AddGadgetItem(2, -1, filename$)
EndIf 

Until FileType = 0 

Else 
MessageRequester("Error","Can't examine this directory: "+GetGadgetText(0),0) 
; EndIf 

EndIf 
EndIf 

Until EventID = #PB_Event_CloseWindow 

EndIf 
compteur$ = Str(compteur) 
MessageRequester("resultat",compteur$) 
SelectElement(liste(), Random(CountList(liste()))) 
MessageRequester ("titre",liste())


End
Mais bon tu pourrais quand même regarder dans l'aide, il y a ce que tu cherche..