Accueil > Forum > > > > Recherche de fichier recursif
Recherche de fichier recursif
vendredi 31 juillet 2009 à 12:11:46 |
Recherche de fichier recursif

maximus4
|
Bonjour,
j'ai la procédure suivante pour la recherche récursive, le résultat est stocké dans un fichier texte.
Code : invoke CreateFile,offset file, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_HIDDEN,NULL
mov hReadWriteInput,eax
Code : ScanRep PROC uses ebx edi esi addrRep:DWORD
LOCAL Scan[500] :BYTE
LOCAL wfd :WIN32_FIND_DATA
LOCAL hFile :HANDLE
LOCAL tailleChemin :DWORD
LOCAL SizeReadWrite :DWORD
jmp _MyJump
_backSlash db "\",0
_etoilePointEtoile db "*.*",0
_FichierInvalide db "Fichier invalide",0
_retChar db 13,10,0
_MyJump:
lea esi, wfd
lea edi, Scan
invoke lstrcpy, edi, addrRep
invoke lstrlen, edi
mov tailleChemin, eax
invoke lstrcat, edi, addr _backSlash
invoke lstrcat, edi, addr _etoilePointEtoile
invoke FindFirstFile, edi, esi
.if eax==INVALID_HANDLE_VALUE
invoke MessageBox, 0, edi, addr _FichierInvalide, 20h
.else
mov hFile, eax
mov ebx, tailleChemin
mov byte ptr [edi+ebx], 0
.while TRUE
invoke FindNextFile, hFile, esi
.break .if eax == 0
.if dword ptr [esi] != FILE_ATTRIBUTE_DIRECTORY
mov eax, esi
add eax, 2Ch
;################# COEUR ###############
; Ici se trouve la sortie des données
; eax pointe sur le nom du Fichier
; edi pointe sur le nom du Répertoire
;invoke MessageBox, 0, edi, eax, 20h
push eax
invoke lstrcat, addr buffer, addr _retChar
invoke lstrcpy, addr buffer, edi
invoke lstrcat, addr buffer, addr _backSlash
pop eax
invoke lstrcat, addr buffer, eax
push eax
invoke lstrcat, addr buffer, addr _retChar
invoke lstrlen, addr buffer
mov SizeReadWrite, eax
invoke WriteFile, hReadWriteInput, addr buffer,SizeReadWrite, addr Nbr_Octet_Ecrit, 0
pop eax
;invoke MessageBox, 0, addr buffer, edi, 20h
;#######################################
.endif
.endw
invoke FindClose, hFile
mov ebx, tailleChemin
mov byte ptr [edi+ebx], "\"
;----------------------------------------------------------
; A ce niveau on a affiché tous les fichiers
; contenus dans le répertoire courrant. Reste à retrouver
; les sous-répertoires pour y entrer en rappellant cette
; même procédure. Procédure récursive
lea esi, wfd
lea edi, Scan
invoke FindFirstFile, edi, esi
mov hFile, eax
.while TRUE
invoke FindNextFile, hFile, esi
.break .if eax == 0
.if dword ptr [esi] == FILE_ATTRIBUTE_DIRECTORY
mov eax, esi
add eax, 2Ch
.if byte ptr [eax] != "."
mov edx, tailleChemin
mov byte ptr [edi+edx+1], 0
invoke lstrcat, edi, eax
invoke ScanRep, edi
.endif
.endif
.endw
invoke FindClose, hFile
;----------------------------------------------------------
.endif
ret
ScanRep ENDP
Le problème c'est que tous les fichiers ne sont pas répertorier dans ce fichier
Merci d'avance
_-=|*max*|=-_
|
|
vendredi 31 juillet 2009 à 23:58:37 |
Re : Recherche de fichier recursif

Guilou34
|
Il y a quelque chose qui m'échappe peut être mais je ne comprends pas pourquoi dans la première boucle WHILE TRUE on néglige les répertoires ni non plus comment on revient au début du fichier pour les traiter ensuite.
N'est-il pas plus logique d'appeler récursivement traitement_repertoire chaque fois qu'on en rencontre un, le retour ayant lieu après en avoir traité la dernière entrée?
Amicalement
|
|
samedi 1 août 2009 à 00:48:52 |
Re : Recherche de fichier recursif

maximus4
|
Absolument en réalité j'étais parti dans la logique d'afficher dans mon fichier texte l'intégralité du répertoire de base avant de traiter les sous répertoires un a un j'aurais pu faire :
Code : ScanRep PROC uses ebx edi esi addrRep:DWORD
LOCAL Scan[500] :BYTE
LOCAL wfd :WIN32_FIND_DATA
LOCAL hFile :HANDLE
LOCAL tailleChemin :DWORD
LOCAL SizeReadWrite :DWORD
jmp _MyJump
_backSlash db "\",0
_etoilePointEtoile db "*.*",0
_FichierInvalide db "Fichier invalide",0
_retChar db 13,10,0
_MyJump:
lea esi, wfd
lea edi, Scan
invoke lstrcpy, edi, addrRep
invoke lstrlen, edi
mov tailleChemin, eax
invoke lstrcat, edi, addr _backSlash
invoke lstrcat, edi, addr _etoilePointEtoile
invoke FindFirstFile, edi, esi
.if eax==INVALID_HANDLE_VALUE
invoke MessageBox, 0, edi, addr _FichierInvalide, 20h
.else
mov hFile, eax
mov ebx, tailleChemin
mov byte ptr [edi+ebx], 0
.while TRUE
invoke FindNextFile, hFile, esi
.break .if eax == 0
.if dword ptr [esi] != FILE_ATTRIBUTE_DIRECTORY
mov eax, esi
add eax, 2Ch
;invoke MessageBox, 0, edi, eax, 20h
;################# COEUR ###############
; Ici se trouve la sortie des données
; eax pointe sur le nom du Fichier
; edi pointe sur le nom du Répertoire
;invoke MessageBox, 0, edi, eax, 20h
push eax
invoke lstrcat, addr buffer, addr _retChar
invoke lstrcpy, addr buffer, edi
invoke lstrcat, addr buffer, addr _backSlash
pop eax
invoke lstrcat, addr buffer, eax
push eax
invoke lstrcat, addr buffer, addr _retChar
invoke lstrlen, addr buffer
mov SizeReadWrite, eax
invoke WriteFile, hReadWriteInput, addr buffer,SizeReadWrite, addr Nbr_Octet_Ecrit, 0
pop eax
;invoke MessageBox, 0, addr buffer, edi, 20h
;#######################################
;#######################################
.else
mov eax, esi
add eax, 2Ch
.if byte ptr [eax] != "."
mov edx, tailleChemin
mov byte ptr [edi+edx], "\"
mov byte ptr [edi+edx+1], 0
invoke lstrcat, edi, eax
invoke ScanRep, edi
mov ebx, tailleChemin
mov byte ptr [edi+ebx], 0
.endif
.endif
.endw
invoke FindClose, hFile
.endif
ret
ScanRep ENDP
mais le résultat est le même il manque toujours des fichiers
|
|
mardi 4 août 2009 à 11:37:09 |
Re : Recherche de fichier recursif
|
Cette discussion est classée dans : mov, addr, invoke, eax, edi
Répondre à ce message
Sujets en rapport avec ce message
out bmp [ par vincent2795 ]
Bonjour, dans ma source, j' essaye de faire un screenshot, et de le nommer pas la date et l' heure ou il es pris. mon problème: si le nom du fichier e
Comment utiliser une variable ?! lorsque l'on utilise déjà ESI et EDI dans la PROC. [ par rebixav ]
Voilà mon problème, je débute en assembleur et je l'utilise essentiellement pour créer des procédure pour visual basic ou C voici une de mes procédure
Aligner des données pour le SSE [ par epineurien ]
Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu
Aidez moi à traduire une petite fonction assembleur en C (API Windows) [ par skirby ]
Bonjour à tous, J'essaye désespérément de traduire une fonction ASM en C. Le but de cette fonction est de pouvoir utiliser une ressource compilé dans
Une mémoire "read" [ par msteve ]
Bonsoir, Je suis débutant et j'ai recopié un programme test. Je parviens à l'assembler, puis à créer un .exe ; quend je lance l'exe j'obtiens la boîte
afficher une image jpeg avec la fonction StretchDIBits ? [ par mitch19 ]
bonjour, j'essaye depuis quelques temps d'afficher une image jpeg avecla commande StretchDIBits, en vain ! mon programme plante lamentablement !Si qu
inverser une chaine [ par MrdJack ]
salut, je suis sur un projet de calculatrice me permettant de faire des calculs avec des nombres tres grands. chaque nombre est stocké dans la memoire
j'ai un prob avec mon buffer ; ya pas d'amuses gueules (masm32) [ par papiboff ]
bj si je mets le buffer "somme " en dd avec charge eax et que j'ajoute deux 'dec ebx ' , ben , marche pas correctement ; (pêrqué ???? = en french) sv
Petit problème pour comparer (cmp) [ par smok1360 ]
Bonjour à tous,Pour commencer, j'espère de ne pas avoir choisis le mauvais lieu pour poster, j'ai un petit peu hésité Donc, j'ai décidé d'apprendre l'
AT&T erreur de compilation etc... [ par maminovadu75 ]
Bonjour, j'aimerais me mettre a l'assembleur mais j'ai quelque problème.voici mon code morceau de code pour trier un tableau de int : ( mélange de C/C
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|