Liste de fichiers avec FindFirst

cs_philpas Messages postés 77 Date d'inscription lundi 17 octobre 2005 Statut Membre Dernière intervention 4 septembre 2008 - 22 nov. 2005 à 10:10
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 23 nov. 2005 à 18:19
Bonjour,
Voici un problème que je rencontre avec FindFirst.
J'ai écrit un code qui recherche si un fichier quelconque, ayant une extension particulière dans un répertoire donné, existe.
en gros voici la ligne de code

if FindFirst(Repertoire+'Outil\*.OUT',faAnyFile,Dirinfo)=0 then
begin
texte:=dirinfo.name;
etc....
end else message erreur ....

je pensais que cette fonction ne trouverais que les fichiers ayant une extension .OUT puisque dans le Path de findfirst j'ai mis *.OUT. Hors lorsque j'ai testé la fonction, j'avais dans le répertoire un seul fichier ABC.OUT. Findfirst me trouve bien le fichier. J'ai voulu ensuite testé l'affichage de mon message d'erreur, j'ai alors renommé le fichier ABC.OUT en ABC.OUT2
et là chose bizarre qui a sans doute une explication mais que je ne connais pas Findfirst ne m'affiche pas le message d'erreur mais fait comme ci il avait trouvé un fichier ayant l'extension .OUT alors qu'il n'y en a pas puisque le fichier s'appelle alors ABC.OUT2. En passant par le debugger la variable texte prend bien le nom du fichier ABC.OUT2 alors que cela ne devrait pas être possible. (findfirst avec une recherche *.OUT me fait en fait une recherche *.OUT*)
J'ai fait ensuite les mêmes tests mais en changeant l'extension des fichiers et de la recherche.
dans le répertoire j'ai mis un fichier et un seul ABC.OU et j'ai mis dans finsfirst *.OU
findfirst trouve le fichier => normal.
j'ai renommé le fichier en ABC.OU1 et là findfirst ne trouve plus de fichier *.OU et m'affiche le message d'erreur. Donc ici cela fonctionne comme je le souhaitais. Je me suis alors dit qu'au delà de 3 caractères après le point findfirst ne tient plus compte de rien. J'ai refais un test avec un fichier qui s'appelle ABC.OUTS et une recherche findfirst avec *.OUTS. Là findsfirst trouve le fichier => normal. J'ai renommé le fichier en ABC.OUTS1 et là mon message d'erreur s'affiche, findfirst ne trouve pas de fichier. Cela fonctionne comme cela devrait.

2 questions:
Pourquoi findfirst ne fonctionne pas correctement lorsque je fais une recherche avec 3 caractères après le point?

Peut être que findfirst a une origine dos, dans ce cas y a t-il une fonction identique à findfirst mais qui gère les noms dit long?

Merci de vos réponses

8 réponses

Utilisateur anonyme
22 nov. 2005 à 19:02
Salut


Findfirtst est une synthaxe Pascal et non Delphi.

Autre point, le problème ne vient pas du nombre de caractères après l'extension : la preuve tu as fait un test et cela marche. Alors d'ou vient l'erreur ?? déjà il faudrait le code dans son ensemble pour dire. Ensuite as tu fermé ton application avec ton test pour ABC.OUT2
? Sinon fais un test avec ABC.OUT puis ferme l'appli. Créer ABC.OUT2 puis FERME LE et relance ton appli et regarde ce que tu obtients.

Bon Prog a+
0
Rejoignez-nous