bonjour,
je voudrais savoir si quelqu'un connais la réponse à ce problème.
je tourne sur windows 2000 et j'utilise delphi6 perso.
j'ai crée une fiche avec un bouton voici le programme
je recherche un fichier ayant l'extension .OUT si j'en trouve un j'ai le message "je vois" et si j'en ai pas j'ai le message inverse. Jusque là c'est simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Button1Click(Sender: TObject); var Dirinfo:TSearchRec; texte:String; begin if FindFirst('*.OUT',faAnyFile,Dirinfo)=0 then begin Texte:=Dirinfo.Name; MessageDlg('je vois le fichier Outil: '+Texte,mtInformation,[mbOK],0) end else MessageDlg('je ne vois pas le fichier Outil',mtError,[mbOK],0); findclose(dirinfo); end;
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
Nota: j'ai a chaque fois redemarré mon application
[Modération]
Balises code ajoutées par Laurent Dardenne
[/Modération]
Partager