[RESOLU] Fonctions récursives
Publié : sam. 14/avr./2012 19:34
J'ai résolu le problème!, le code ci dessous à été corrigé
J'ai un problème, je n'arrive pas à créer une fonction récursive pour le problème que j'ai, dont voici le code qui fonctionne avec Comate!
Le code permet de lister le contenu d'un zip
pour le test, il faut que le zip contienne des fichiers, des répertoires et des sous répertoires et sous fichiers!
Help me
J'ai un problème, je n'arrive pas à créer une fonction récursive pour le problème que j'ai, dont voici le code qui fonctionne avec Comate!
Le code permet de lister le contenu d'un zip
pour le test, il faut que le zip contienne des fichiers, des répertoires et des sous répertoires et sous fichiers!
Help me
Code : Tout sélectionner
IncludePath "..\"
XIncludeFile "COMatePLUS.pbi"
Define.COMateObject objShell, SrcFldr
Procedure enum2(SrcFldr.comateobject, item.l)
Static Dim FolderItems.COMateObject(1000), Dim FolderItem.COMateObject(1000)
Static Dim a.l(1000), Dim count.l(1000)
Protected Folder.COMateObject, file.s
FolderItems(item)=SrcFldr\GetObjectProperty("Items")
SrcFldr\release()
Debug "FolderItems "+Str(item)
count(item)=FolderItems(item)\GetintegerProperty("Count")
a(item)=0
While a(item)<count(item)
FolderItem(item)= FolderItems(item)\GetObjectProperty("Item("+Str( a(item))+ " as long)")
If FolderItem(item)
file= FolderItem(item)\GetStringProperty("Name")
Debug file
If FolderItem(item)\GetintegerProperty("IsFolder")=-1 ; teste si c'est un répertoire
Folder=FolderItem(item)\GetObjectProperty("GetFolder")
If folder
item= enum2(folder, item+1)
EndIf
EndIf
FolderItem(item)\release()
EndIf
a(item)=a(item)+1
Wend
FolderItems(item)\release()
ProcedureReturn (item-1)
EndProcedure
objShell = COMate_CreateObject("Shell.Application")
If objShell
SrcFldr = objShell\GetObjectProperty("NameSpace('C:\Users\nico\Desktop\popo.zip')") ; remplacer le par votre zip !
Debug comate_getlasterrordescription()
enum2(SrcFldr,0)
objShell\Release()
EndIf