Y'a pas à dire j'ai un problème de compréhension pour les threads
Malgré les exemples du fofo, malgré la doc (vraiment trop pauvre de ce coté), je n'ai pas la moindre idée de comment syntaxer la procédure (ou le thread).
En gros lors du glissé déposé j'ai
Code : Tout sélectionner
Select EventWindow()
Case 0
If event=#PB_Event_WindowDrop
StickyWindow(0,0) ; on évite le 1er plan pour les messagerequester à venir
;- Création de la liste
ClearList(fichier())
ClearList(MD5())
NomFichier$=EventDropFiles()
NbrFichier = CountString(NomFichier$, Chr(10)) + 1
If NbrFichier>0
;Si il y a des fichiers on lance la procedure en Thread pour ne pas freezer la fenêtre
MD5LIST=CreateThread(@CreateList(), 0) ; JE LANCE MA PROCEDURE ICI
Else
;(...blabla....)
EndIf
EndIf
EndSelect
Et voilà la procédure (j'ai juste enlever l'écriture du fichier list car là n'est pas le soucis)
Code : Tout sélectionner
Procedure CreateList() ; Procedure lancé au drag n drop
For i = 1 To NbrFichier
MonFichier$ = StringField(NomFichier$, i, Chr(10))
Resultat = FileSize(MonFichier$)
NomCourt$=GetFilePart(MonFichier$)
InfoRep$=GetPathPart(MonFichier$)
If Resultat<>-2 ; Si ce n'est pas un répertoire...------------
setgadgettext(1,nomcourt$)
MD5$ = MD5FileFingerprint(MonFichier$)
AddElement(fichier())
fichier()=NomCourt$
AddElement(MD5())
MD5()=MD5$
repAfichier$=GetPathPart(MonFichier$)
Else
;(----blabla----)
EndIf
Next i
NbrAtraiter=ListIndex(fichier())+1
;Si il y a au moins 1 fichier à traiter, on sauve
If NbrAtraiter>0
SetGadgetText(1,Str(NbrAtraiter)+" files have been checked.")
;sauvegarde-------------------------------------------
TitreSauve$="Saving Md5 List"
sauvegarde:
StickyWindow(0,0)
Sauve$=SaveFileRequester(TitreSauve$,repAfichier$+"md5list",filtre$,0)
If Sauve$
;On remet les listes à 0 et on reinitialise TailleFichier---
ResetList(fichier())
ResetList(MD5())
TailleFichier=0
;Création du fichier liste----------------------------------
;(..code d'écriture fichier liste...)
Else
EndIf
StickyWindow(0,1)
KillThread(MD5LIST)
EndIf
EndProcedure