API Win32 : FindFirstFile merde avec les Wilcards ?

API Win32 : FindFirstFile merde avec les Wilcards ? - C - Programmation

Marsh Posté le 01-10-2003 à 14:55:15    

Je comprend pas ce qui se passe
Sous windows, quand on fait "Rechercher un fichier", et qu'on dis de rechercher,

00001.*

dans une répertoire qui contient 2 fichiers : 00001 et 00001.tmp, normalement, il devrait ne rendre QUE le fichier 00001.tmp.  
Pourtant, quand je passe cette chaine à rechercher à FindFirstFile, il me sort les 2 fichiers. Il se trouve que ça m'emmerde bien. qqn a une expliquation à ça ? Peut être même une solution ?

Reply

Marsh Posté le 01-10-2003 à 14:55:15   

Reply

Marsh Posté le 01-10-2003 à 14:58:12    

J'ai peut être une explication :
Tout fichier Windows devant avoir une extension, ton fichier 00001 est en fait un fichier 00001. et répond donc à l'exigence 00001.* (rechercher tous les fichiers qui ont comme nom 00001 et n'importe quelle extension).


---------------
each day I don't die is cheating
Reply

Marsh Posté le 01-10-2003 à 15:00:07    

gatorette a écrit :

J'ai peut être une explication :
Tout fichier Windows devant avoir une extension, ton fichier 00001 est en fait un fichier 00001. et répond donc à l'exigence 00001.* (rechercher tous les fichiers qui ont comme nom 00001 et n'importe quelle extension).


 
T'as peut être raison. ça voudrait donc dire que le comportement est "normal", et que je n'ai pas de solution... :(

Reply

Marsh Posté le 01-10-2003 à 15:14:57    

Ha mais non, c'est pas l'expliquation en fait, c'est pas possible :
si j'utilise 00001.?*, il me rend encore les 2 fichier (dont celui "sans" extention).
Alors que ce masque veut dire : tous les fichiers commençant par 00001. puis un caractère, puis 0 à une infinité de caractères. :(

Reply

Marsh Posté le 01-10-2003 à 15:47:14    

C'est "normal" que ça prenne les deux fichiers, en DOS et en ligne de commande NT ça fait pareil.
C'est vrai que c'est bizarre que le "?" en fin de nom se comporte comme un "pas de caractère ou 1 caractère", mais c'est comme ça [:spamafote] Le comportement du * comme extension ne me surprend pas vu qu'en DOS/Windows l'extension a une signification plus grande qu'en Unix/Linux/Mac/...

Reply

Marsh Posté le 01-10-2003 à 17:12:25    

antp a écrit :

C'est "normal" que ça prenne les deux fichiers, en DOS et en ligne de commande NT ça fait pareil.
C'est vrai que c'est bizarre que le "?" en fin de nom se comporte comme un "pas de caractère ou 1 caractère", mais c'est comme ça [:spamafote] Le comportement du * comme extension ne me surprend pas vu qu'en DOS/Windows l'extension a une signification plus grande qu'en Unix/Linux/Mac/...


 
Ouais, on peut appeler ça un bug quoi !
Bref, je m'suis débrouillé en énumérant les fichiers et en filtran moi même ceux qui ont une extention, et ceux qui n'en ont pas.
Merci qd même...

Reply

Marsh Posté le 01-10-2003 à 17:33:32    

El_gringo a écrit :


 
Ouais, on peut appeler ça un bug quoi !


 
la logique existe depuis la première version du DOS, ils vont pas changer en cours de route [:spamafote]

Reply

Marsh Posté le 01-10-2003 à 20:37:35    

El_gringo a écrit :


 
Ouais, on peut appeler ça un bug quoi !
Bref, je m'suis débrouillé en énumérant les fichiers et en filtran moi même ceux qui ont une extention, et ceux qui n'en ont pas.
Merci qd même...


 
no, it's a feature [:aloy]

Reply

Marsh Posté le 02-10-2003 à 09:14:14    

antp a écrit :


 
la logique existe depuis la première version du DOS, ils vont pas changer en cours de route [:spamafote]


 
...j'vois pas où est la logique là dedant.
D'un côté, ils inventent les wilcards, il permettent de les utiliser pour rechercher des fichiers, mais dans le cas que j'viens d'énoncer, les wilcards sont interprètés faussement. Moi j'appelle ça un bug. Volontairement maintenu, peut être, mais un bug ! :o

Reply

Marsh Posté le 02-10-2003 à 09:54:47    

El_gringo a écrit :


 
...j'vois pas où est la logique là dedant.


 
j'ai pas dit que c'était logique, j'ai dit que cette logique là existait depuis le début du DOS :p
Le "?" qui foire c'est un bug, mais le .* qui retourne les trucs sans extensions je vois pas ça comme un bug. * veut dire aussi "rien" donc les fichiers avec "rien" comme extension sont retournés aussi


Message édité par antp le 02-10-2003 à 09:55:46
Reply

Marsh Posté le 02-10-2003 à 09:54:47   

Reply

Marsh Posté le 02-10-2003 à 10:01:54    

antp a écrit :


 
j'ai pas dit que c'était logique, j'ai dit que cette logique là existait depuis le début du DOS :p
Le "?" qui foire c'est un bug, mais le .* qui retourne les trucs sans extensions je vois pas ça comme un bug. * veut dire aussi "rien" donc les fichiers avec "rien" comme extension sont retournés aussi


 
J'ai pas dit le contraire. N'empêche que le coup du "?", c un bug !

Reply

Marsh Posté le 02-10-2003 à 10:05:14    

El_gringo a écrit :


 
...j'vois pas où est la logique là dedant.
D'un côté, ils inventent les wilcards, il permettent de les utiliser pour rechercher des fichiers, mais dans le cas que j'viens d'énoncer, les wilcards sont interprètés faussement. Moi j'appelle ça un bug. Volontairement maintenu, peut être, mais un bug ! :o  


 
Ben pas vraiment, *.* ayant depuis tjrs désigné tous les fichiers avec ou sans extension  [:spamafote]


---------------
Le Tyran
Reply

Marsh Posté le 02-10-2003 à 10:14:31    

LetoII a écrit :


 
Ben pas vraiment, *.* ayant depuis tjrs désigné tous les fichiers avec ou sans extension  [:spamafote]  


 
... à bon ?
Moi quand je vais dans la "recherche de fichiers" de Windows (XP). Avec *.*, il me sort QUE les fichiers avec extention !

Reply

Marsh Posté le 02-10-2003 à 10:17:11    

El_gringo a écrit :


 
... à bon ?
Moi quand je vais dans la "recherche de fichiers" de Windows (XP). Avec *.*, il me sort QUE les fichiers avec extention !


 
Ben essaye un del *.* dans la console tu verra.  [:spamafote]


---------------
Le Tyran
Reply

Marsh Posté le 02-10-2003 à 10:47:11    

C'est là le problème du bug : un comportement hasardeux.

Reply

Marsh Posté le 02-10-2003 à 11:53:21    

El_gringo a écrit :


Moi quand je vais dans la "recherche de fichiers" de Windows (XP). Avec *.*, il me sort QUE les fichiers avec extention !


 
C'est qu'ils ont corrigé le "bug" dans l'Explorateur mais pas dans l'API, par soucis de compatibilité avec les anciens softs [:ddr555]
Ce que dit LetoII est vrai, *.* a toujours désigné tous les fichiers. XP l'a peut-être changé, mais c'est donc un changement tout récent, dans les anciens Windows c'était pas comme ça.

Reply

Marsh Posté le 02-10-2003 à 11:53:45    

El_gringo a écrit :


N'empêche que le coup du "?", c un bug !


 
C'est exactement ce que j'ai dit dans ce que t'a quoté :o

Reply

Marsh Posté le 02-10-2003 à 12:37:27    

antp a écrit :


 
C'est qu'ils ont corrigé le "bug" dans l'Explorateur mais pas dans l'API, par soucis de compatibilité avec les anciens softs [:ddr555]
Ce que dit LetoII est vrai, *.* a toujours désigné tous les fichiers. XP l'a peut-être changé, mais c'est donc un changement tout récent, dans les anciens Windows c'était pas comme ça.

J'ai testé sous XP avant de m'avancer ;)


---------------
Le Tyran
Reply

Marsh Posté le 02-10-2003 à 12:39:20    

LetoII a écrit :

J'ai testé sous XP avant de m'avancer ;)


 
Quand je disais "XP l'a peut-être changé" je parle de la recherche dans l'explorateur. Vu que je n'utilise jamais cette recherche-là et que j'ai pas XP ici au boulot je n'en savais rien ;)

Reply

Marsh Posté le 02-10-2003 à 12:45:49    

antp a écrit :


 
Quand je disais "XP l'a peut-être changé" je parle de la recherche dans l'explorateur. Vu que je n'utilise jamais cette recherche-là et que j'ai pas XP ici au boulot je n'en savais rien ;)


 
Ha ça c possible


---------------
Le Tyran
Reply

Marsh Posté le 02-10-2003 à 14:27:45    

Citation :

D'un côté, ils inventent les wilcards, il permettent de les utiliser pour rechercher des fichiers, mais dans le cas que j'viens d'énoncer, les wilcards sont interprètés faussement. Moi j'appelle ça un bug. Volontairement maintenu, peut être, mais un bug !


 
Ca porte le nom de "backward comBUGability". :)
Un (des très rares, voire le seul ?) article sur le sujet :
http://www.codeguru.com/files/CAdvFind.html


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 02-10-2003 à 14:48:14    

HelloWorld a écrit :

Citation :

D'un côté, ils inventent les wilcards, il permettent de les utiliser pour rechercher des fichiers, mais dans le cas que j'viens d'énoncer, les wilcards sont interprètés faussement. Moi j'appelle ça un bug. Volontairement maintenu, peut être, mais un bug !


 
Ca porte le nom de "backward comBUGability". :)
Un (des très rares, voire le seul ?) article sur le sujet :
http://www.codeguru.com/files/CAdvFind.html
 


 
Ouais, enfin, c'est le gars qui à écrit l'article qui appelle ça comme ça...
Mais, merci pour l'explication.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed