Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » 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
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
Dernière modification par
nico le sam. 14/avr./2012 23:03, modifié 2 fois.
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » sam. 14/avr./2012 21:05
Petite correction sur le code mais ça marche toujours pas!
Backup
Messages : 14526 Inscription : lun. 26/avr./2004 0:40
Message
par Backup » sam. 14/avr./2012 22:49
chez moi il affiche bien les dossiers contenu dans les dossiers ....
c'est quoi concrètement le dezipage , pour voir s'il peut deziper ?
( mon arbo c'est : Dossier1\dossier2\dossier3\ et 4 fichiers dedans )
voici :
[23 :49 :56] Okay.
[23 :49 :56] a= 0
[23 :49 :56] count= 1
[23 :49 :56] item= 0
[23 :49 :56] 62588976
[23 :49 :56] Okay.
[23 :49 :56] 0
[23 :49 :56] dossier1
[23 :49 :56] a= 0
[23 :49 :56] count= 1
[23 :49 :56] item= 1
[23 :49 :56] 62589040
[23 :49 :56] Okay.
[23 :49 :56] 0
[23 :49 :56] dossier 2
[23 :49 :56] a= 0
[23 :49 :56] count= 1
[23 :49 :56] item= 2
[23 :49 :56] 62589104
[23 :49 :56] Okay.
[23 :49 :56] 0
[23 :49 :56] dossier 3
[23 :49 :56] a= 0
[23 :49 :56] count= 4
[23 :49 :56] item= 3
[23 :49 :56] 62589168
[23 :49 :56] Okay.
[23 :49 :56] 0
[23 :49 :56] COMatePLUS.pbi
[23 :49 :56] a= 1
[23 :49 :56] count= 4
[23 :49 :56] item= 3
[23 :49 :56] 62589168
[23 :49 :56] An exception occurred during the execution of this method/property.
[23 :49 :56] 0
[23 :49 :56] a= 2
[23 :49 :56] count= 4
[23 :49 :56] item= 3
[23 :49 :56] 62589168
[23 :49 :56] An exception occurred during the execution of this method/property.
[23 :49 :56] 0
[23 :49 :56] a= 3
[23 :49 :56] count= 4
[23 :49 :56] item= 3
[23 :49 :56] 62589168
[23 :49 :56] An exception occurred during the execution of this method/property.
[23 :49 :56] 0
[23 :49 :56] item= 2
[23 :49 :56] item= 1
[23 :49 :56] item= 0
Backup
Messages : 14526 Inscription : lun. 26/avr./2004 0:40
Message
par Backup » sam. 14/avr./2012 23:07
ok ça affiche chez moi
:
[00 :06 :28] Okay.
[00 :06 :28] FolderItems 0
[00 :06 :28] dossier1
[00 :06 :28] FolderItems 1
[00 :06 :28] dossier 2
[00 :06 :28] FolderItems 2
[00 :06 :28] dossier 3
[00 :06 :28] FolderItems 3
[00 :06 :28] COMatePLUS.pbi
[00 :06 :28] COMatePLUS_Residents.pbi
[00 :06 :28] test.pb
[00 :06 :28] VariantHelper_Include.pb
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » sam. 14/avr./2012 23:08
Pour voir le problème, il fallait à chaque fois mettre dossier et fichiers.
Je te remercie, j'ai corrigé le problème.
Ce code va me servir à dézipper seulement les fichiers suivant un filtre.
En ce moment, j'ai un code qui utilise une fonction de dézippage (lib de gnozal) mais elle est pas compatible 64 bits, alors je préfère utiliser la fonction de window et ça m'enlève une dépendance!
Backup
Messages : 14526 Inscription : lun. 26/avr./2004 0:40
Message
par Backup » sam. 14/avr./2012 23:09
bon , ben cool , que ça marche a++