PureBasic

Forums PureBasic
Nous sommes le Ven 24/Mai/2013 3:07

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: [RESOLU] Fonctions récursives
MessagePosté: Sam 14/Avr/2012 19:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3069
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:
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 édition par nico le Sam 14/Avr/2012 23:03, édité 2 fois.

Haut
 Profil  
 
 Sujet du message: Re: Fonctions récursives
MessagePosté: Sam 14/Avr/2012 21:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3069
Petite correction sur le code mais ça marche toujours pas!


Haut
 Profil  
 
 Sujet du message: Re: Fonctions récursives
MessagePosté: Sam 14/Avr/2012 22:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
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 :
Citation:
[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

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Fonctions récursives (Résolu)
MessagePosté: Sam 14/Avr/2012 23:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
ok ça affiche chez moi :) :

Citation:
[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


_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Fonctions récursives (Résolu)
MessagePosté: Sam 14/Avr/2012 23:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3069
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!


Haut
 Profil  
 
 Sujet du message: Re: Fonctions récursives (Résolu)
MessagePosté: Sam 14/Avr/2012 23:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
bon , ben cool , que ça marche a++ :)

_________________
Image


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye