Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Mystère sur file_find_first$ et compagnie | |
| | |
Auteur | Message |
---|
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Mystère sur file_find_first$ et compagnie Mer 26 Juin 2013 - 17:55 | |
| J'ai fait un petit programme d'essai pour explorer mes disques. Voici le programme qui me pose problème : - Code:
-
rem ' Exploration dim a$ : rem Variables provisoires dim d$ : rem Disque exploré label go rem form0 width 0,1300 height 0,700
combo 5 left 5,100 top 5,620 item_add 5,"C:" item_add 5,"F:" item_add 5,"G:" item_add 5,"H:" item_add 5,"I:" on_click 5,go
list 10 width 10,1200 height 10,600 sort_on 10 alpha 20 top 20,620
end : ' ------------------------------
go: : rem Récapitulatif des répertoires et fichiers trouvés clear 10 d$=item_index$(5)+"\" dir_change d$ a$=file_find_first$ while a$<>"_" item_add 10,a$ a$=file_find_next$ end_while file_find_close caption 20,count(10) return Simple, en apparence, n'est-ce pas ? Le problème, ce n'est pas que ça ne marche pas, c'est que j'ai observé un détail, il manque des répertoires et des fichiers, pas beaucoup, mais il y en a certains qui n'apparaissent pas, et impossible de savoir pourquoi !?!?!?!? Ca vous fait la même chose, avec vos différents disques ? Comptez-bien ! Certains me diront que pour quelques fichiers en moins... oui, mais si on explore un disque et qu'il y a des manques, et en particulier des répertoires entiers qui n'apparaissent pas, ce n'est même plus la peine d'espérer faire quelque chose d'exact ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 26 Juin 2013 - 18:09 | |
| As tu vérifié les autorisations et l'option "fichier caché" ? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mystère sur file_find_first$ et compagnie Mer 26 Juin 2013 - 18:38 | |
| Attention au répertoires 'fictifs' à partir de vista et Windows 7. Certains répertoires sont des raccourcis inexistants 'physiquement' sur le disque. Je crois me souvenir qu'il avait déjà eu des sujets sur le forum sur ce thème. (Peut être un thème de JL35 sur l'explorateur de fichier ou Klaus, je ne me souviens pas bien) | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 26 Juin 2013 - 18:45 | |
| nan, nan, nan ! Ils ne sont ni cachés, ni fictifs ! Je suis là sur XP des fichiers qui n'apparaissent pas sont par exemple des images .jpg et les répertoires qui n'apparaissent pas, ce sont souvent des répertoires que j'ai créés moi-même. Mais ça vous le fait à vous ou pas ? Regardez bien le total du programme et la liste de vos répertoires et fichiers ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mystère sur file_find_first$ et compagnie Mer 26 Juin 2013 - 21:19 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 10:17 | |
| C'est curieux, ton problème.
Je suis sous XP Pro SP3, et je constate le même problème. Or, ta boucle de recherche est correcte - je ne l'aurais pas programmée autrement. Il manque des fichiers et des répertoires, sans qu'on puisse déterminer pourquoi. Par contre, on a des fichiers et répertoires en plus, par rapport à ce que Explorer affiche. Normal - ce sont les fichiers cachés et les fichiers système qui sont normalement invisibles.
Donc, que quelqu'un de plus qualifié donne son avis. Si Jack pouvait jeter un coup d'oeil... | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Jeu 27 Juin 2013 - 13:25 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 14:08 | |
| J’ai comparé le résultat du programme avec celui donné par la commande MSDOS DIR /A qui affiche une liste de fichiers et de sous-répertoires dans un répertoire avec les fichiers dotés des attributs (Répertoires, Lecture seule, Caché, Archive, Système). J’ai constaté que parfois les deux affichages sont conformes, mais parfois il en manque deux répertoires sans que je puisse formuler une relation avec ces répertoires absents à l’appel ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 16:26 | |
| J'en profite pour saluer jjn4 qui s'était fait plutôt discret ! Suite à ta remarque papydall, j'ai essayé de faire le parallèle entre les deux méthodes (Panoramic et msdos) en reprenant le programme de notre ami jjn4: - Code:
-
rem ' Exploration dim a$ : rem Variables provisoires dim d$ : rem Disque exploré dim i%, j% label go
rem form0 height 0,900
combo 5 left 5,100 top 5,820 item_add 5,"C:" item_add 5,"E:" item_add 5,"G:" item_add 5,"H:" item_add 5,"I:" on_click 5,go
list 10 width 10,200: height 10,800
list 11 left 11,width(10)+5: width 11,200: height 11,800
alpha 20: top 20,top(10)+height(10) alpha 21: top 21,top(20): left 21,left(11)
end : ' ------------------------------
go: : rem Récapitulatif des répertoires et fichiers trouvés clear 10: sort_on 10 d$=item_index$(5)+"\" dir_change d$ a$=file_find_first$ while a$<>"_" item_add 10,a$ a$=file_find_next$ end_while file_find_close sort_off 10 caption 20,count(10)
clear 11 EXECUTE_WAIT "Cmd.exe /C DIR /A /B /O:N "+d$+" >C:\TEMP\Dir" FILE_LOAD 11,"C:\TEMP\Dir": FILE_DELETE "C:\TEMP\Dir" caption 21,count(11)
item_add 10,"": item_add 10,"====== Éléments manquants: =======" for i% = 1 to count(11) a$ = item_read$(11,i%) for j% = 1 to count(10) if item_read$(10,j%) = a$ then exit_for next j% if j%>count(10) then item_add 10, a$ next i% return Pour ma part, je constate qu'il manque systématiquement avec Panoramic les deux premiers éléments de la liste, quel que soit le volume exploré. Remarque: il semble que le File_Find... rende les résultats dans l'ordre alphabétique, j'ai donc supprimé le sort_on. (je suis sous W 7). Effectivement, il semble bien que le File_Find_First$ sur un répertoire démarre systématiquement sur le troisième élément du répertoire dans l'ordre alphabétique ! Bon, ce n'est pas tout à fait exact, là j'ai un exemple (clé usb) où il manque le 1er et le 3ème... C'est à n'y rien comprendre, sur une autre clé, ce sont les deux derniers qui manquent, mais il y a toujours un déficit de 2.
Dernière édition par JL35 le Jeu 27 Juin 2013 - 17:10, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 16:47 | |
| Bonjour à tous. Si vous dites qu'il manque 2 fichiers, c'est peut-être que Jack a voulu supprimer "." et ".." qui sont listés avec la commande DIR de MsDos. Et là il a commit une erreur. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 17:00 | |
| Salut cosmos, non, rien à voir, les pseudo répertoires . et .. n'apparaissent pas quand on est directement sous la racine du volume, ce sont bien deux répertoires réels qui manquent. Ce qui est (presque) rassurant, c'est que c'est reproductible, ce sont toujours les deux mêmes éléments qui manquent. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Jeu 27 Juin 2013 - 17:14 | |
| Salut, JL35 ! Il m'avait semblé, effectivement, qu'il en manquait souvent 2, deux répertoires ou deux fichiers, mais avec des aspects aléatoires difficilement compréhensibles ! Ne peut-on pas supposer que la recherche les prend dans l'ordre où ils ont été enregistrés et que ce sont les deux premiers (pas forcément alphabétiques) qui manquent ? En tout cas, on dirait bien que j'ai débusqué un bug de Panoramic ! Alors voilà du taf pour Jack ! (Ouaih, j'ai entendu dire qu'il n'en avait pas beaucoup...) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 17:24 | |
| Un bug ou nous qui ne savons pas parfaitement utiliser la commande, mais dans ce cas, l'explication de Jack sera semble-t-il très utile puisque les Panoramiciens n'arrivent pas à utiliser cette commandes correctement (ou qu'elle est bugguée). Comme Panoramic ce veut très simple d'utilisation, si on n'arrive pas à utiliser simplement la commande, il y a forcément un échec par rapport à l'objectif, donc un point à revoir. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 17:24 | |
| Salut jj ! Je crois bien que j'ai percé le mystère !
j'ai essayé avec des sous-répertoires, et cosmos a raison dans un certain sens, le File_Find ignore les (pseudo-)répertoires . et .. qui sont en tête de la liste des sous-répertoires. Donc il saute systématiquement les deux premiers éléments, qu'il considère comme étant le '.' et le '..', et ça c'est bien.
Malheureusement il n'a pas considéré le cas de la racine du volume, où là ces deux éléments ne figurent pas, et là aussi il saute systématiquement les deux premiers éléments, considérant que ce sont les fameux . et .. !
Dernière édition par JL35 le Jeu 27 Juin 2013 - 17:32, édité 1 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 17:26 | |
| On s'est croisés Jicehel (salut), mais je crois bien que mon explication est la bonne (même expliquée de manière un peu touffue ). Et dans ce cas c'est évidemment un petit bug, qui ne concerne que les file_find de la racine des volumes, et non les sous-répertoires. Il faudrait tester (Jack) que les deux éléments qui sont sautés sont bien ces fameux . et .. Je fais amende honorable cosmos, finalement c'est toi qui as mis le doigt dessus, c'est bien en voulant supprimer les ./.. que Jack en fait trop en ce qui concerne les volumes (si mon explication est bonne). Et malheureusement il n'y a pas de solution possible en panoramic, ces éléments sautés on ne peut pas les trouver autrement (ou alors faire la commande msdos DIR, comme j'ai fait ci-dessus, en attendant mieux). | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Jeu 27 Juin 2013 - 17:50 | |
| Je crois bien que tu as raison, JL35, car effectivement, avec les sous-répertoires, autant que j'ai pu en tester, ça marche à tous les coups, il n'y a qu'avec les racines qu'il en manque 2 dans l'ordre alphabétique, que ce soit 2 fichiers, 2 répertoires ou 1 fichier et 1 répertoire. Je me servirais bien de ta méthode DOS, mais elle ne marche pas quand les répertoires ont (au moins) un espace dans le nom. Aïe, aïe, aïe ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 18:12 | |
| Alors il faut auparavant transformer le chemin du répertoire en chemin court compatible msdos, il y a des méthodes pour ça, je regarde. Et si tu mets le nom complet du répertoire entre guillemets, ça semble marcher ? par exemple EXECUTE_WAIT "Cmd.exe /C DIR " + CHR$(34)+"Toto tata"+CHR$(34)+" /A... ... non ça ne marche pas... je regarde pour les noms courts. Voilà cher ami, j'ai trouvé la sub qui convient dans ma collection: - Code:
-
SUB Nomcourt(Path$) ' Conversion de Path long en Path court (sans espace) - rs_nc$ IF VARIABLE("rs_nc$") = 0 THEN DIM rs_nc$ DIM_LOCAL nc_fbat$,nc_tmp$,nc_court$ nc_fbat$ = "C:\Temp\Nomcourt.bat": nc_tmp$ = "C:\Temp\temp" FILE_OPEN_WRITE 9, nc_fbat$ FILE_WRITELN 9, "@echo off" FILE_WRITELN 9, "for %%A in ("+CHR$(34)+Path$+CHR$(34)+") do echo.%%~sfA >"+nc_tmp$ FILE_CLOSE 9 EXECUTE_WAIT nc_fbat$ FILE_OPEN_READ 9, nc_tmp$ FILE_READLN 9, rs_nc$ FILE_CLOSE 9: FILE_DELETE nc_tmp$: FILE_DELETE nc_fbat$ END_SUB donc tu convertis le chemin long (avec espaces) en chemin court avant de l'envoyer au DIR, et ça marchera. (il faut un répertoire C:\TEMP, ou alors modifier dans la sub) Edit: tiens jjn4, en cadeau une autre sub qui fait le dir sans faire apparaître de fenêtre noire intempestive (mais il faut auparavant passer par la sub Nomcourt si tu as des noms de répertoires avec espaces: - Code:
-
SUB Dir(rep$, arg$) ' Liste des fichiers du répertoire rep$, options arg$, résultat -> CLIPBOARD ' (à coller par exemple dans un Memo). Exécution sans fenêtre noire. ' Arguments optionnels: ' /A:D répertoires, /A:-D fichiers, /B format abrégé" ' /-C pas de séparateur de milliers, /-N fichiers à gauche (abrégés) ' /O: (tri) N tri alpha, E tri par extension, G répertoires en tête, ' S tri par taille, D tri par date croissante (-D date décroissante) ' /S y compris sous-répertoires, /X avec noms abrégés. DIM_LOCAL prg_a$, s_cr$, b_at$ prg_a$ = "CMD.exe /c DIR " + rep$ + " " + arg$ + " | clip" s_cr$ = "C:\Vbscript.vbs": b_at$ = "C:\Bat.bat" FILE_OPEN_WRITE 9, b_at$: FILE_WRITELN 9, prg_a$: FILE_CLOSE 9: ' Fichier .bat prg_a$ = "CreateObject(" + CHR$(34) + "Wscript.Shell" + CHR$(34) + ").Run " prg_a$ = prg_a$ + CHR$(34) + b_at$ + CHR$(34) + ",0,True" FILE_OPEN_WRITE 9, s_cr$: FILE_WRITELN 9, prg_a$: FILE_CLOSE 9: ' script vbs EXECUTE_WAIT "WSCRIPT.exe " + s_cr$: ' Exécution du script FILE_DELETE b_at$: FILE_DELETE s_cr$ END_SUB le résultat est envoyé dans le clipboard, et tu peux le rapatrier dans un list, un memo, etc. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Jeu 27 Juin 2013 - 18:43 | |
| Merci, JL35, tu es un chef programmateur !!! Ceci dit, le problème, c'est que si je programme avec mon vieux fixe équipé d'XP, je destine le programme à un nouvel ordinateur équipé en Windows 8, et celui-là n'a pas l'air d'apprécier le DOS !!! Alors, moi qui aime bien les solutions simples, en attendant les corrections de Jack, j'ai trouvé une autre solution que je n'ai pas encore essayée, (là, je suis sur la tablette en W8) mais qui devrait marcher (je l'essaierai demain) c'est d'ajouter deux fichiers vides à tous mes disques et clé USB, 00.txt et 000.txt. Ca devrait le faire !!! Merci quand même pour tes efforts ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 18:58 | |
| Mais de rien ! Mais j'espère bien que mes solutions faisant appel à des fonctions msdos (en réalité il n'y a plus de msdos, mais elles sont émulées par windows), ça je pense bien que ça restera dans w8 (ça marche en tout cas dans w7, et c'est normal). Si toutes ces fonctions étaient supprimées, quelle que soit la version de windows, il me semble que ça mettrait beaucoup de monde dans l'embarras ! (tu remarqueras que je suis poli).
Ta solution doit certes être efficace, mais bon sang, ça paraît plutôt... comment dire... bestial ! si tu récupères un volume d'ailleurs, disque externe ou clé, ça posera des problèmes. | |
| | | Invité Invité
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 20:09 | |
| Vous avez avancé depuis. Ne t'excuses pas JL35. C'était une supposition, et je ai laissé faire le travail. D'ailleurs en ce moment j'ai pas le temps de programmer. Bravo! J'ai réédité pour essayer d'insérer un smileys d'un autre forum. Et ça marche. |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Jeu 27 Juin 2013 - 21:00 | |
| @ JL35 Tu veux dire dans la m... ? Je vérifierai, mais je crois bien que c'est ce qu'ils ont fait ! Ca s'appelle l'obsolescence programmée...
(même que je ne peux plus mettre ma tête de ET les smileys ont disparu) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Jeu 27 Juin 2013 - 22:14 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Mystère sur file_find_first$ et compagnie Ven 28 Juin 2013 - 3:52 | |
| - JJN4 a écrit:
- Merci, JL35, tu es un chef programmateur !!!
JL35 je pensais jusqu’à maintenant que tu étais et tu es encore programmeur et voilà que JJN4 dévoile ton vrai métier ! Mais il n’a pas indiqué dans quel domaine : télévision ou radio ? Programmateur ou programmeur ? ici Les deux mots "programmateur" et "programmeur" existent, mais leurs significations sont différentes. Un programmateur est la personne qui prévoit les programmes de télévision ou de radio. Ce nom désigne également un appareil qui permet de gérer la mise en marche automatique d’un autre appareil. On peut avoir un programmateur sur une machine à laver, machine à pain, cafetière électrique etc. Le programmeur en revanche est une personne dont le métier est de créer et gérer des programmes informatiques, cette personne fait de la programmation. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 28 Juin 2013 - 4:27 | |
| Les mystères ne sont pas que dans les "file_find..." j' ai fait deux boucles imbriquées, mes adresses de fichiers sont coincées dans des constantes qui par définition ne changent pas...ben oui, puisqu'elles sont constantes . Bref tout est bien jusqu'à la dernière boucle qui, comme par enchantement, me dit " unknown directory". J' ai traité mon Pc de mémoire de poisson rouge , cela ne faisait que 5 fois qu' il me la retrouvait après tout... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Mystère sur file_find_first$ et compagnie Ven 28 Juin 2013 - 13:07 | |
| @papydall je n'avais même pas percuté sur le mot programmateur, j'avais lu machinalement programmeur, et c'est vrai que ce n'est pas du tout la même chose, je vois plutôt le programmateur (même chef) dans une machine à laver ou quelque chose du même genre, ce qui n'est pas très flatteur.
Du coup jjn4, comme j'aime à penser que c'était involontaire, c'est toi qui payes l'apéro ! | |
| | | Contenu sponsorisé
| Sujet: Re: Mystère sur file_find_first$ et compagnie | |
| |
| | | | Mystère sur file_find_first$ et compagnie | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |