Bonjour a tous ! 8)
J'ai un gros probleme avec FindNext, j'ai beau essayer de comprendre, je n'y comprend rien du tout !
Voici l'énnoncé :
Je fais une recherche avec la fonction FindFirst, suivit ensuite de la fonction FindNext pour trouver la prochaine occurence.
Pour rechercher efficacement mes fichiers, j'utilise le caractére générique *, qui remplace toute chaine de caractére, et que la fonction FindFirst et FindNext accepte.
La chaine rechercher avec FindFirst est : " *1.txt "
Ce qui se résume a n'importe lequel des fichiers texte situé dans le repertoire en cours finissant par 1, exemple -> readme1.txt
Alors maintenant j'ai deux dossier, 1 qui a toujour existé sur mon disque dur, et un 2eme qui est tout simplement la copie du premier avec un chemin différent bien entendus, Pourquoi ?
Hé bien parcequ'avec le premier dossier (celui qui est d'origine), quand je fait une recherche avec ma procédure il me renvoie des résultat bizarre, alors qu'avec la copie de ce dossier les résultat sont excellent, pour résumé le probleme voici un petit résumé
Le 1er dossier est G:\README\Norton\ et contient les fichiers :
- Lisezmoi1.txt
- LISEZMOI2.TXT
- lisezmoi3.txt
- lisezmoi4.txt
- README1.TXT
- README2.TXT
- Readme3.txt
info : ce dossier est d'origine sur mon PC :
Le 2eme dossier est G:\README\README\ et contient les même fichiers, en clair c'est une copie, j'ai juste renommé "Norton" en "README" :
- Lisezmoi1.txt
- LISEZMOI2.TXT
- lisezmoi3.txt
- lisezmoi4.txt
- README1.TXT
- README2.TXT
- Readme3.txt
Alors maintenant executon la procedure sur les 2 dossier, dans la logique il devrait me retourner les mêmes résultat, c'est a dire :
Pour le dossier 1 :
Chaine rechercher = " *1.txt "
Le résultat est = Lisezmoi1.txt, LISEZMOI2.TXT, README1.TXT (Pas logique !)
Pour le dossier 2 :
Chaine rechercher = " *1.txt "
Le résultat est = Lisezmoi1.txt, README1.TXT (Logique !)
Alors voila le probleme que j'ai !? par contre ça n'a pas l'air d'être une erreur de fichier étant donnée que quand je les changes de dossiers, la recherche s'éffectue comme il faut ! En clair c'est seulement quand je les mets dans ce dossier que ça déconne (du moins je crois !).
Pendant que j'y suis voici le code :
Je tient a préciser que je n'attend pas de réponse a cette enigme, je voudrais juste une explication logique, donc si quelqu'un pourrait au moins me donné une réponse a tout ça, je lui en serait vraiment reconnaissant, je vous pris de m'éxcuser pour les bétise que je pourrait dire, car je suis débutant en programmation, sur ce merci d'avance (Ca se trouve que c'est moi le bug ! aller savoir).
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 procedure TForm1.Button1Click(Sender: TObject); var Files: String; PropF: TSearchRec; label FNext; begin Memo1.Clear; try Files:=Edit1.Text; if FindFirst(Files,faAnyFile,PropF) = 0 then begin FNext: Memo1.Lines.Add(PropF.Name); if FindNext(PropF) = 0 then goto FNext; end; finally FindClose(PropF); end; end;
Partager