Bonjour à tous,
je cherche a faire une fonction de recherche d'un fichier dans un répertoire avec recursivité.
si vous avez ça en stock je suis preneur, car je galère
merci
Bonjour à tous,
je cherche a faire une fonction de recherche d'un fichier dans un répertoire avec recursivité.
si vous avez ça en stock je suis preneur, car je galère
merci
Salut,
Tu peux sans doute t'inspirer de cette discussion
A+![]()
Inno Setup supportant FindFirst/FindNext/FindClose, tu peux utiliser le type de routine présentée dans les Sources Delphi :
http://nono40.developpez.com/sources/source0042/
sjrd, ancien rédacteur/modérateur Delphi.
Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
Découvrez Mes tutoriels.
merci, pour la fonction de recursivité j'ai bien vu, mais inno ne fonctionne pas tout a fait pareil et j'ai un peu de mal pour l'adapter
A part renommer TSearchRec en TFindRec et remplacer les faX par FILE_ATTRIBUTE_X, il n'y a pas beaucoup de changements.
Peux-tu nous montrer ce que tu as déjà fait, et où ça te pose problème.
N'oublie pas non plus l'aide de IS qui n'est pas mal faite, et dans laquelle il y a même un exemple d'utilisation de FindFirst (sans récursivité, mais en combinant la source de Nono ça devrait le faire)
sjrd, ancien rédacteur/modérateur Delphi.
Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
Découvrez Mes tutoriels.
Salut
Quelque chose comme ça ?
En s'inspirant de l'exemple d'IS (et son aide) et la source de Nono avec appel récursif.
Cela te ramène le nom du dossier de la 1° occurence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 [Code] var DirFound: string; procedure FileInDir(Dir: string; const FileName: string); var FindRec: TFindRec; begin if FindFirst(AddBackSlash(Dir) + '*', FindRec) then begin try repeat if (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then FileInDir(AddBackSlash(Dir) + FindRec.Name, Filename) else if CompareText(FindRec.Name, FileName) = 0 then DirFound := Dir; end; until (DirFound <> '') or (not FindNext(FindRec)); finally FindClose(FindRec); end; end; end; procedure Test; begin DirFound := ''; FileInDir('C:\MonDossierInitial', 'MonProg.exe'); if DirFound <> '' then MsgBox('Fichier trouvé dans le dossier: ' + DirFound, mbInformation, MB_OK) else MsgBox('Fichier non trouvé', mbInformation, MB_OK) end;
@+ Claudius
Partager