API Win32 : FindFirstFile merde avec les Wilcards ? - C - Programmation
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).
Marsh Posté le 01-10-2003 à 15:00:07
gatorette a écrit : J'ai peut être une explication : |
T'as peut être raison. ça voudrait donc dire que le comportement est "normal", et que je n'ai pas de solution...
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.
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 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/...
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. |
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...
Marsh Posté le 01-10-2003 à 17:33:32
El_gringo a écrit : |
la logique existe depuis la première version du DOS, ils vont pas changer en cours de route
Marsh Posté le 01-10-2003 à 20:37:35
El_gringo a écrit : |
no, it's a feature
Marsh Posté le 02-10-2003 à 09:14:14
antp 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 !
Marsh Posté le 02-10-2003 à 09:54:47
El_gringo a écrit : |
j'ai pas dit que c'était logique, j'ai dit que cette logique là existait depuis le début du DOS
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
Marsh Posté le 02-10-2003 à 10:01:54
antp a écrit : |
J'ai pas dit le contraire. N'empêche que le coup du "?", c un bug !
Marsh Posté le 02-10-2003 à 10:05:14
El_gringo a écrit : |
Ben pas vraiment, *.* ayant depuis tjrs désigné tous les fichiers avec ou sans extension
Marsh Posté le 02-10-2003 à 10:14:31
LetoII a écrit : |
... à bon ?
Moi quand je vais dans la "recherche de fichiers" de Windows (XP). Avec *.*, il me sort QUE les fichiers avec extention !
Marsh Posté le 02-10-2003 à 10:17:11
El_gringo a écrit : |
Ben essaye un del *.* dans la console tu verra.
Marsh Posté le 02-10-2003 à 11:53:21
El_gringo 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
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.
Marsh Posté le 02-10-2003 à 11:53:45
El_gringo a écrit : |
C'est exactement ce que j'ai dit dans ce que t'a quoté
Marsh Posté le 02-10-2003 à 12:37:27
antp a écrit : |
J'ai testé sous XP avant de m'avancer
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
Marsh Posté le 02-10-2003 à 12:45:49
antp a écrit : |
Ha ça c possible
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
Marsh Posté le 02-10-2003 à 14:48:14
HelloWorld a écrit :
|
Ouais, enfin, c'est le gars qui à écrit l'article qui appelle ça comme ça...
Mais, merci pour l'explication.
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 ?