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 |
|
|
| Le petit explorateur | |
| | |
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Le petit explorateur Lun 4 Juin 2012 - 14:50 | |
| Une autre approche que celle de Klaus pour explorer les fichiers (voir à côté: FILE_FIND...). En fait je n'utilise pas les fonctions Panoramic, mais les fonctions natives MsDos (ou émulées dans Windows). Avantage: tout est dans le programme, pas besoin de dll annexe (notamment pour l'affichage des attributs). Inconvénient: apparition d'une brève fenêtre noire à chaque exécution de la fonction Dos (Dir et Attrib). Durée d'exécution: à peu près comme celle de Klaus. On peut choisir d'afficher pour chaque fichier, au choix, la date de modification, la taille, les attributs et le nom court éventuel du fichier. Si on change un de ces paramètres, cliquer le bouton 'OK' pour réafficher la liste courante avec les nouveaux paramètres. Navigation: pour aller au répertoire suivant: cliquer sur celui-ci. Pour revenir au répertoire précédent, cliquer sur le bouton flèche verticale. (on peut rentrer directement le répertoire désiré dans la zone Edit, puis 'OK'). Pour agir sur un fichier (examen, copie, etc.), cliquer sur l'article correspondant. La fonction dump s'affiche par tranches de 8192 octets pour ne pas surcharger, cliquer sur la ligne [SUITE] pour la suite, 'OK' pour terminer. Le programme: - Code:
-
LABEL Dir, Preced, Trait, Listf, Chedit, Dumpf, Dumpf1, Suidum, Retdum, Execf LABEL Quitf, Copy, Renom, Suppr, Nomcourt, Convac, Volumes, Chd, Aide DIM rep$, fm$, fa$, f$, a$, b$, c$, d$, n$, i%, j%, k%, dat%, tai%, atr%, nco% DIM nr%, nf%, tot, ld%, lt%, la%, lc%, xf%, sep$ DIM ad%, sad%, saf%, sz%, m$, as$, ac1$, ac2$, nac%, inivol%, fscr$, fvol$ DATA 129,130,131,133,135,136,137,138,139,140,0: ' lettres accentuées DATA 252,233,226,224,231,234,235,232,239,238,0 ac1$ = "": ac2$ = "": nac% = 0 READ i%: WHILE i% <> 0: ac1$ = ac1$ + CHR$(i%): nac%=nac%+1: READ i%: END_WHILE READ i%: WHILE i% <> 0: ac2$ = ac2$ + CHR$(i%): READ i%: END_WHILE ld% = 17: lt% = 12: la% = 10: lc% = 13: ' taille des champs d'affichage
rep$ = "C:": ' répertoire de départ ' ===== Fichiers de manoeuvre temporaires ===== fm$ = "C:\Temp\Dir.tmp" fa$ = "C:\Temp\Atr.tmp" fscr$ = "C:\Temp\ScrVbs.vbs": ' script exécutable créé fvol$ = "C:\Temp\ResVbs.txt" ' ============================================= as$ = CHR$(92): ' anti-slash (escamoté par le forum si entre guillemets) sep$ = " ": ' séparateur: espace sep$ = CHR$(124): ' séparateur: barre verticale
WIDTH 0, 620: HEIGHT 0, 800: FONT_BOLD 0: COLOR 0,255,255,164 LIST 1 : TOP 1,45: WIDTH 1, 600: HEIGHT 1,HEIGHT(0)-100: FONT_NAME 1, "Lucida Console" FONT_BOLD_OFF 1 ON_CLICK 1, Trait DLIST 11: DLIST 12: DLIST 13 j% = 5 FOR i% = 14 TO 19: ' liste des volumes montés (6 maxi listés) ALPHA i%: TOP i%,25: LEFT i%, j%: WIDTH i%,20: COLOR i%,200,255,255 ON_CLICK i%, Chd j% = j% + 20 NEXT i%
ALPHA 20: TOP 20, 3: CAPTION 20, "Répertoire:" BUTTON 31: TOP 31, 0: LEFT 31, 65: WIDTH 31, 20: HEIGHT 31, 21: ' bouton 'Flèche' FONT_NAME 31,"Symbol": FONT_SIZE 31, 10: FONT_BOLD 31: CAPTION 31, CHR$(173) HIDE 31: ON_CLICK 31, Preced EDIT 21: LEFT 21, 90: WIDTH 21, 450: ' répertoire courant listé BUTTON 22: TOP 22,0: LEFT 22,LEFT(21)+WIDTH(21)+5: WIDTH 22, 50: HEIGHT 22,21 CAPTION 22,"OK": ON_CLICK 22, Dir ' options d'affichage de la liste CHECK 23: TOP 23,25: LEFT 23,150: CAPTION 23,"Dates": MARK_ON 23 CHECK 24: TOP 24,25: LEFT 24,LEFT(23)+70: CAPTION 24,"Tailles": MARK_ON 24 CHECK 25: TOP 25,25: LEFT 25,LEFT(24)+70: CAPTION 25,"Attributs": ' MARK_ON 25 CHECK 26: TOP 26,25: LEFT 26,LEFT(25)+70: CAPTION 26,"Noms courts" BUTTON 28: TOP 28,27: LEFT 28,LEFT(22): WIDTH 28,50: HEIGHT 28,16 CAPTION 28,"Aide": ON_CLICK 28, Aide ALPHA 30: TOP 30, TOP(1)+HEIGHT(1): LEFT 30, 10 ' Choix: action sur clic d'un fichier FORM 50: TOP 50, 90: LEFT 50,400: WIDTH 50, 185: HEIGHT 50, 190 BORDER_HIDE 50: COLOR 50,255,164,164: FONT_BOLD 50: HIDE 50 CONTAINER 68:PARENT 68,50:TOP 68,14: LEFT 68,2: WIDTH 68,WIDTH(50)-4: HEIGHT 68,HEIGHT(50)-16 ALPHA 51: PARENT 51, 50: TOP 51,2: LEFT 51,5: COLOR 51,200,255,255 BUTTON 52: PARENT 52,50: TOP 52,21: LEFT 52,15: HEIGHT 52,20: CAPTION 52, "Lister" BUTTON 53: PARENT 53,50: TOP 53,TOP(52): LEFT 53, 95: HEIGHT 53,20: CAPTION 53, "Dump" BUTTON 54: PARENT 54,50: TOP 54,TOP(53)+25: LEFT 54,15: HEIGHT 54,20: CAPTION 54, "Exécuter" BUTTON 55: PARENT 55,50: TOP 55,TOP(54): LEFT 55,95: HEIGHT 55,20:CAPTION 55, "Copier" BUTTON 56: PARENT 56,50: TOP 56,TOP(54)+25: LEFT 56,15: HEIGHT 56,20:CAPTION 56,"Renommer" BUTTON 57: PARENT 57,50: TOP 57,TOP(56): LEFT 57,95: HEIGHT 57,20: CAPTION 57,"Supprimer" BUTTON 58: PARENT 58,50: TOP 58,TOP(56)+25: LEFT 58, 15: HEIGHT 58,20:CAPTION 58, "Path court" BUTTON 60: PARENT 60,50: TOP 60,HEIGHT(50)-30: LEFT 60, WIDTH(50)/2-40: CAPTION 60, "Quitter" ON_CLICK 52,Listf: ON_CLICK 53,Dumpf: ON_CLICK 54,Execf: ON_CLICK 55, Copy ON_CLICK 56, Renom: ON_CLICK 57, Suppr: ON_CLICK 58,Nomcourt: ON_CLICK 60,Quitf BUTTON 61: PARENT 61,50: TOP 61,1: LEFT 61,WIDTH(50)-15: WIDTH 61,15: HEIGHT 61,15 CAPTION 61,"X": ON_CLICK 61, Quitf ' Choix du programme de traitement pour affichage du fichier (option Lister) LIST 65: PARENT 65,50: TOP 65,TOP(54)-4: LEFT 65,10: WIDTH 65,160 HEIGHT 65,HEIGHT(50)-45: COLOR 65,200,255,200 DLIST 66 HIDE 65: ON_CLICK 65, Chedit ' ========== LIST 65: nom du programme, DLIST 66: chemin du programme ========== ITEM_ADD 65,"Notepad (.txt)": ITEM_ADD 66,"Notepad.exe" ITEM_ADD 65,"Wordpad (.rtf)": ITEM_ADD 66,"Wordpad.exe" ITEM_ADD 65,"Word (.doc)": ITEM_ADD 66, "" ITEM_ADD 65,"Works (.wps,.wks)": ITEM_ADD 66, "C:\Progra~2\MIDCA9~1\MSWorks.exe" ITEM_ADD 65,"Abiword (.abw)": ITEM_ADD 66,"C:\Progra~2\AbiWord\bin\AbiWord.exe" ITEM_ADD 65,"Acrobat (.pdf)": ITEM_ADD 66,"C:\PROGRA~2\Adobe\READER~1.0\Reader\AcroRd32.exe" ITEM_ADD 65,"Excel (.csv)": ITEM_ADD 66,"" ITEM_ADD 65,"Internet Explorer (.htm)": ITEM_ADD 66,"C:\PROGRA~1\INTERN~1\iexplore.exe" ITEM_ADD 65,"Panoramic (.bas)": ITEM_ADD 66,"C:\PROGRA~2\PANORA~1\PANORA~1.EXE" ITEM_ADD 65,"IrfanView (images)": ITEM_ADD 66,"C:\PROGRA~2\IrfanView\i_view32.exe" ' ==============================================================================
' Fenêtre d'affichage Hexadécimal (dump) FORM 70: TOP 70, 80: LEFT 70, 80: WIDTH 70, 560: HEIGHT 70, HEIGHT(0)-140 BORDER_HIDE 70: COLOR 70,255,164,164: FONT_BOLD 70: HIDE 70 ALPHA 71: PARENT 71,70: LEFT 71,5 LIST 72: PARENT 72,70: TOP 72,14: LEFT 72, 5: WIDTH 72, WIDTH(70)-10 HEIGHT 72,HEIGHT(70)-45: FONT_NAME 72, "Lucida Console": FONT_BOLD_OFF 72 ON_CLICK 72, Suidum BUTTON 73: PARENT 73, 70: TOP 73, HEIGHT(70)-28: LEFT 73, 250 CAPTION 73,"Quitter": ON_CLICK 73,Retdum
TEXT 21, rep$: GOSUB Dir END
' +=+=+=+=+=+=+=+=+=+=+=+=+=+=+ SOUS-PROGRAMMES +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= Dir: GOSUB Volumes dat% = CHECKED(23): tai% = CHECKED(24): atr% = CHECKED(25): nco% = CHECKED(26) xf% = dat%*ld% + tai%*lt% + atr%*la% + nco%*lc% + 1: ' index nom du fichier rep$ = TEXT$(21): IF RIGHT$(rep$,1) = as$ THEN rep$ = LEFT$(rep$, LEN(rep$)-1) IF DIR_EXISTS(rep$) = 0 MESSAGE "Répertoire: " + rep$ + " non trouvé !": RETURN END_IF a$ = LEFT$(rep$, 2) FOR i% = 1 TO COUNT(13) b$ = ITEM_READ$(13,i%): IF a$ = LEFT$(b$, 2) THEN EXIT_FOR NEXT i% CAPTION 0, " - EXPLORATEUR - Volume: " + b$ CLEAR 1: nr% = 0: nf% = 0: tot = 0 FONT_COLOR 30,255,0,0: CAPTION 30, "Patience..." ' Paramètres de la commande DIR (MsDos): en ligne de commande, taper: Help DIR ' (le dernier paramètre '>' déroute la sortie du résultat sur un fichier texte). EXECUTE_WAIT "Cmd.exe /c DIR " + chr$(34)+rep$ + "\*.*"+chr$(34)+" /A /O:NG /TW /-C /X >" + fm$ FILE_LOAD 11, fm$: FILE_DELETE fm$ IF atr% = 1 EXECUTE_WAIT "Cmd.exe /c ATTRIB " + rep$ + "\*.* >" + fa$ FILE_LOAD 12, fa$: FILE_DELETE fa$ END_IF SHOW 31: IF LEN(rep$) <4 THEN HIDE 31 FOR i% = 1 TO COUNT(11) a$= ITEM_READ$(11, i%) IF MID$(a$, 22, 1) = "<" IF MID$(a$, 50, 1) <> "." b$ = MID$(a$, 22, 4) IF nco% = 1 b$ = b$ + "> " + MID$(a$, 37, 100) ELSE b$ = b$ + "> " + MID$(a$, 50, 100) END_IF GOSUB Convac: ITEM_ADD 1, b$: nr% = nr% + 1 END_IF END_IF display NEXT i% FOR i% = 1 TO COUNT(11) a$= ITEM_READ$(11, i%): b$ = "" IF a$ <> "" AND LEFT$(a$, 1) <> " " AND MID$(a$, 22,1) = " " IF dat% = 1 THEN b$ = LEFT$(a$,10)+MID$(a$,12,6)+sep$: ' date/heure IF tai% = 1 THEN b$ = b$ + MID$(a$, 25, 11)+sep$: ' taille tot = tot + VAL(MID$(a$, 25, 11)) n$ = MID$(a$, 50, 100): ' fichier IF atr% = 1 FOR j% = 1 TO COUNT(12) IF RIGHT$(ITEM_READ$(12, j%), LEN(n$)) = n$ THEN EXIT_FOR NEXT j% d$ = "" IF j% <= COUNT(12) c$ = LEFT$(ITEM_READ$(12, j%), 10) FOR j% = 1 TO LEN(c$) IF MID$(c$, j%, 1)<> " " THEN d$ = d$ + MID$(c$, j%, 1) NEXT j% END_IF b$ = b$ + d$ + STRING$(9-LEN(d$), " ")+sep$ END_IF IF nco% = 1 THEN b$ = b$ + MID$(a$, 37, 12)+sep$ b$ = b$ + n$ GOSUB Convac: ITEM_ADD 1, b$: nf% = nf% + 1 display END_IF NEXT i% a$ = STR$(tot): ' taille totale IF LEN(a$) > 3 a$ = LEFT$(a$, LEN(a$)-3) + " " + MID$(a$, LEN(a$)-2,3) IF LEN(a$) > 7 a$ = LEFT$(a$, LEN(a$)-7) + " " + MID$(a$, LEN(a$)-6, 7) IF LEN(a$) > 11 a$ = LEFT$(a$, LEN(a$)-11) + " " + MID$(a$, LEN(a$)-10, 11) END_IF END_IF END_IF FONT_COLOR 30,0,0,0 CAPTION 30,STR$(nr%)+" Répertoires, " + STR$(nf%)+" Fichiers, Total = "+a$+" octets." RETURN
Preced: ' bouton flèche: répertoire précédent FOR i% = LEN(rep$) TO 1 STEP -1 IF MID$(rep$, i%, 1) = as$ THEN EXIT_FOR NEXT i% TEXT 21, LEFT$(rep$, i%-1) GOSUB Dir RETURN Trait: ' Clic sur un élément de la liste a$ = ITEM_INDEX$(1) IF LEFT$(a$, 1) = " " THEN RETURN IF LEFT$(a$, 1) = "<" ' c'est un répertoire IF nco% = 1 b$ = MID$(a$, 20, 100) ELSE b$ = MID$(a$, 7, 100) END_IF IF LEFT$(a$, 5) = "<JON>" OR LEFT$(a$, 5) = "<SYM>" ' c'est un répertoire 'JONCTION' ou 'SYMLINKD' (virtuel) FOR i% = LEN(b$) TO 1 STEP -1 IF MID$(b$, i%, 1) = "[" THEN EXIT_FOR NEXT i% ' prise en compte du chemin du répertoire réel de renvoi, entre crochets: b$ = MID$(b$, i%+1, 100): b$ = LEFT$(b$, LEN(b$)-1) TEXT 21, b$ ELSE TEXT 21, rep$ + as$ + b$ END_IF GOSUB Dir ELSE ' c'est un fichier a$ = MID$(a$, xf%, 100): ' nom du fichier CAPTION 51, a$: f$ = rep$ + as$ + a$: ' chemin complet SHOW 50: : HIDE 65: TO_FOREGROUND 50 END_IF RETURN
Listf: SHOW 65 RETURN
Chedit: ' Choix du programme de lecture HIDE 65: HIDE 50 i% = ITEM_INDEX(65): b$ = ITEM_INDEX$(65): c$ = ITEM_READ$(66,i%) IF c$ = "" THEN c$ = "Notepad.exe" EXECUTE_WAIT c$ + " " + CHR$(34) + f$ + CHR$(34) RETURN
Dumpf: HIDE 50 ' dump des 8192 premiers caractères seulement (= &H2000) CAPTION 71, f$ FILEBIN_OPEN_READ 1, f$: sz% = FILEBIN_SIZE(1): FILEBIN_CLOSE 1 sad% = 0: saf% = sz%: IF sz% > 8192 THEN saf% = 8192 SHOW 70: TO_FOREGROUND 70 CLEAR 72 Dumpf1: FILEBIN_OPEN_READ 1, f$ FILEBIN_POSITION 1, sad% FOR ad% = sad% TO saf% STEP 16 FILEBIN_HEXA_READ 1, 16, a$: d$ = "": c$ = "" FOR i% = 1 TO LEN(a$) STEP 2 IF (ad%+(i%-1)/2) >= sz% THEN EXIT_FOR m$ = MID$(a$, i%, 2) d$ = d$ + m$ + " " j% = HEX(m$) IF j% <32 c$ = c$ + "." ELSE c$ = c$ + CHR$(j%) END_IF NEXT i% b$ = RIGHT$(" "+HEX$(ad%),6) ITEM_ADD 72, b$+": " + d$ + STRING$(49-LEN(d$)," ") + c$ DISPLAY NEXT ad% FILEBIN_CLOSE 1 IF saf% < sz% THEN ITEM_ADD 72," ====== clic pour [SUITE] " + STRING$(47,"=") RETURN
Suidum: a$ = ITEM_INDEX$(72): IF INSTR(a$, "[SUITE]") < 1 THEN RETURN ITEM_DELETE 72,ITEM_INDEX(72) sad% = saf%+16: saf% = sad% + 8192: IF saf% > sz% THEN saf% = sz% GOTO Dumpf1 RETURN
Retdum: HIDE 70 RETURN
Execf: HIDE 50 EXECUTE_WAIT CHR$(34) + f$ + CHR$(34) RETURN
Copy: a$ = "COPIE": b$ = "Copie de " + f$ + " vers:" c$ = "" c$ = MESSAGE_INPUT$(a$,b$,c$) IF c$ <> "" IF INSTR(c$, as$) < 1 THEN c$ = rep$ + as$ + c$ FILE_COPY f$,c$: GOSUB Dir END_IF RETURN
Renom: a$ = "RENOMMER": b$ = "Renommer " + f$ + " en:" c$ = "" c$ = MESSAGE_INPUT$(a$,b$,c$) IF c$ <> "" IF INSTR(c$, as$) < 1 THEN c$ = rep$ + as$ + c$ FILE_RENAME f$,c$: GOSUB Dir END_IF RETURN
Suppr: i% = MESSAGE_CONFIRMATION_YES_NO("Suppression définitive de " + f$) IF i% = 1 THEN FILE_DELETE f$: GOSUB Dir RETURN
Nomcourt: ' Récupération du chemin court d'un fichier (sans espaces) en fonction de son chemin long File_Open_Write 1, "C:\Temp\nct.bat" File_WriteLn 1, "@echo off" File_WriteLn 1, "for %%A in ("+chr$(34)+f$+chr$(34)+") do echo.%%~sfA >" + fm$ File_Close 1 EXECUTE_WAIT "C:\Temp\nct.bat" File_Open_Read 1, fm$: File_ReadLn 1, a$: File_Close 1 File_Delete fm$: File_Delete "C:\Temp\nct.bat" CLIPBOARD_STRING_COPY a$ b$ = "- Chemin long:"+chr$(10)+f$+chr$(10) b$ = b$ + "- Chemin court:"+chr$(10)+a$+chr$(10)+CHR$(9)+"(copié dans le clipboard)." HIDE 50 MESSAGE b$ RETURN
Quitf: HIDE 65: HIDE 50 RETURN
Convac: FOR j% = 1 TO LEN(b$) d$ = MID$(b$, j%, 1) FOR k% = 1 TO nac% IF d$ = MID$(ac1$, k%, 1) b$ = LEFT$(b$,j%-1)+mid$(ac2$,k%,1)+MID$(b$,j%+1,100) EXIT_FOR END_IF NEXT k% NEXT j% RETURN
Volumes: IF inivol% = 0 b$ = CHR$(13)+CHR$(10) ' script vbs de recherche des volumes montés a$ = "Dim net, shell, computer, fso, WMISet,oWinnt"+b$ a$=a$+"Dim fst, fichier"+b$ a$=a$+"Set fst = CreateObject("+CHR$(34)+"Scripting.FileSystemObject"+CHR$(34)+")"+b$ a$=a$+"Set fichier = fst.CreateTextFile("+CHR$(34)+fvol$+CHR$(34)+")"+b$ a$=a$+"Set net = Wscript.CreateObject("+CHR$(34)+"WScript.Network"+CHR$(34)+")"+b$ a$=a$+"Set shell = WScript.CreateObject("+CHR$(34)+"WScript.Shell"+CHR$(34)+")"+b$ a$=a$+"Set fso = WScript.CreateObject("+CHR$(34)+"Scripting.FileSystemObject"+CHR$(34)+")"+b$ a$=a$+"computer = net.ComputerName"+b$ a$=a$+"set WMISet = GetObject("+CHR$(34)+"winmgmts:{impersonationLevel=impersonate}!//"+CHR$(34)+" & Computer).ExecQuery _"+b$ a$=a$+"("+CHR$(34)+"SELECT * FROM Win32_LogicalDisk"+CHR$(34)+")"+b$ a$=a$+"Message = "+CHR$(34)+""+CHR$(34)+" "+b$ a$=a$+"For each Disk in WMISet"+b$ a$=a$+" Capa = Disk.Size"+b$ a$=a$+" If Capa <> "+CHR$(34)+""+CHR$(34)+" Then"+b$ a$=a$+" Name = Disk.VolumeName"+b$ a$=a$+" If Message <> "+CHR$(34)+""+CHR$(34)+" Then Message = Message & VBCRLF"+b$ a$=a$+" Message = Message & Disk.Name & "+CHR$(34)+" "+CHR$(34)+" & Name"+b$ a$=a$+" End if"+b$ a$=a$+"Next"+b$ a$=a$+"fichier.WriteLine (Message)"+b$ a$=a$+"fichier.Close"+b$ a$=a$+"wscript.quit" FILE_OPEN_WRITE 1, fscr$: FILE_WRITEBUF 1, a$, LEN(a$): FILE_CLOSE 1 inivol% = 1 END_IF EXECUTE_WAIT "Wscript.exe " + fscr$ CLEAR 13 FILE_OPEN_READ 1, fvol$ WHILE FILE_EOF(1) = 0: FILE_READLN 1, a$: ITEM_ADD 13,a$: END_WHILE FILE_CLOSE 1: FILE_DELETE fvol$ FOR i% = 14 TO 19: CAPTION i%, " ": NEXT i% FOR i% = 14 TO 19 j% = i%-13: IF j%>COUNT(13) THEN EXIT_FOR CAPTION i%, LEFT$(ITEM_READ$(13, j%),2) NEXT i% RETURN
Chd: ' Clic sur une lettre de volume FOR i% = 14 TO 18 IF CLICKED(i%) = 1 THEN EXIT_FOR NEXT i% i% = i%-13: IF i% > COUNT(13) THEN RETURN: ' pas de volume a$ = LEFT$(ITEM_READ$(13,i%),2) IF a$ = LEFT$(rep$,2) THEN RETURN: ' c'est le volume courant, clic ignoré TEXT 21, a$: GOSUB Dir RETURN
Aide: b$ = CHR$(13)+CHR$(10): c$ = CHR$(9) a$ = c$+c$+" - EXPLORATEUR DE FICHIERS -"+b$+b$ a$=a$+"L'explorateur s'ouvre d'office à la racine du disque système (C:)."+b$ a$=a$+"Pour descendre d'un répertoire, cliquer sur le répertoire désiré."+b$ a$=a$+"Pour remonter d'un répertoire, cliquer sur le bouton flèche verticale."+b$ a$=a$+"On peut à tout moment changer de volume en cliquant sur la lettre"+b$ a$=a$+"correspondante: les volumes montés sont affichés en haut sous 'Répertoire'."+b$ a$=a$+"Le nom du volume courant s'affiche dans le titre de la fenêtre principale."+b$+b$ a$=a$+"NB: les répertoires qui s'affichent avec un autre chemin de répertoire entre"+b$ a$=a$+"crochets sont des répertoires virtuels (JONCTION) qui renvoient vers un répertoire"+b$ a$=a$+"réel. Si on clique sur un de ces répertoires, on obtient l'affichage du répertoire"+b$ a$=a$+"réel."+b$+b$ a$=a$+"Pour l'affichage des contenus, on peut choisir une ou plusieurs des options"+b$ a$=a$+"proposées, en cochant la case correspondante:"+b$ a$=a$+"- Affichage des dates de dernière modification des fichiers, des tailles des"+b$ a$=a$+"fichiers en octets, de leurs attributs, et de la version courte du nom des"+b$ a$=a$+"fichiers et répertoires si elle existe."+b$+b$ a$=a$+"Attributs, une lettre par attribut: A fichier archive, S fichier système,"+b$ a$=a$+c$+" H fichier caché, R fichier en lecture seule, I fichier indexé (?)."+b$+b$ a$=a$+"En cliquant sur un nom de fichier, on a accès au choix suivant:"+b$ a$=a$+"Lister:"+c$+c$+"Lecture du fichier (texte) dans le programme de son choix."+b$ a$=a$+c$+c$+"On peut modifier la liste des programmes de lecture utilisés"+b$ a$=a$+c$+c$+"dans les définitions en tête du programme (objets 65 et 66)."+b$ a$=a$+"Dump:"+c$+c$+"Affichage du fichier sous forme hexadécimale, par tranches"+b$ a$=a$+c$+c$+"de 8192 octets: cliquer sur la ligne [SUITE] à la fin pour"+b$ a$=a$+c$+c$+"afficher les 8192 octets suivants."+b$ a$=a$+"Exécuter:"+c$+c$+"Lancement du programme pour un fichier exécutale."+b$ a$=a$+"Copier:"+c$+c$+"Copie à l'identique du fichier (et non transfert comme sous"+b$ a$=a$+c$+c$+"l'Explorateur Windows si c'est sur le même volume)."+b$ a$=a$+"Renommer:"+c$+"Modification du nom du fichier."+b$ a$=a$+"Supprimer:"+c$+"Suppression définitive du fichier, sans recopie dans la"+b$ a$=a$+c$+c$+"corbeille Windows."+b$ a$=a$+"Path court:"+c$+"Affichage dans une fenêtre du chemin court complet du fichier"+b$ a$=a$+c$+c$+"(ce chemin court est copié simultanément dans le presse-papier)."+b$ a$=a$+"Quitter:"+c$+c$+"Pour revenir à la liste des fichiers." MESSAGE a$ RETURN
edit 4/6 correction d'un bug dans le s/p Execf (exécution d'un fichier) ajout d'un s/p d'aide sommaire. 20h50 remplacé tous les anti-slash entre guillemets par CHR$(92) (en fait par as$ = CHR$(92)) 21h25 oups, j'avais encore oublié deux endroits... 22h10 prise en compte des répertoires virtuels (JUNCTION) edit 5/6 fichiers: ajout du calcul du chemin court complet du fichier ciblé. edit 6/6 prise en compte des fichiers et répertoires avec lettres accentuées 22h10 choix du programme utilisé pour lister un fichier. edit 7/6 ajout de la prise en compte des volumes montés (disques, clés, etc.) edit 8/6 bugs mineurs, et modifs esthétiques
Dernière édition par JL35 le Ven 8 Juin 2012 - 14:45, édité 12 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 15:10 | |
| Salut JL35.
C’est très intéressent comme programme. Mais il y a un bug : En cliquant sur le bouton flèche verticale, j’obtiens le message d’erreur suivant : (52) Not correct string expression.Function call with negative value.Line :127
Je retourne étudier le source A+ | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 15:29 | |
| Bonjour JL35, A chaque fois que je clique sur un dossier dans la liste puis sur le bouton lister, il m'ouvre une fenêtre bloc notes et me met accès refusé, mais quand je rentre le nom du dossier en toutes lettres dans l'édit, il me liste bien le contenu. Si je clique sur dump, j'ai le message cannot open file c:\etc... Si je suis dans un dossier que je clique sur un fichier exe, puis sur le bouton Exécuter, j'ai le message suivant: Windows ne trouve pas C:\prog.exe. Vérifiez que vous avez entré le nom correct, puis réessayez. Je ne vais pas plus loin, mais comme je suis sous windows 7, je pense que ça doit être lié au droit d'administrateur. A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 15:30 | |
| A la ligne 127 (sortie de la boucle) - Code:
-
FOR i% = LEN(rep$) TO 1 STEP -1 IF MID$(rep$, i%, 1) = "" THEN EXIT_FOR NEXT i%
La valeur de i% doit-être égale à zéro, et - Code:
-
TEXT 21, LEFT$(rep$, i%-1)
L’appel se fait avec une valeur de moins un, donc négative d’où l’erreur A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 16:03 | |
| Si, je change l’unité du disque c : en d : , En cliquant sur un répertoire quelconque de l’unité d :, J’obtiens le message d’erreur suivant : list index out of bounds (0)
A+
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: nti-slash Lun 4 Juin 2012 - 17:00 | |
| Bizarre, je n'avais pas d'erreur. Merci à vous, je regarde tout ça. @bignono, effectivement sous W7 tu dois te heurter à des interdictions sur certains fichiers système ou cachés (regarde les attributs de ces fichiers), mais là je ne sais pas si je peux y faire grand chose, j'ai aussi souvent des problèmes avec ces fichiers-là. Je n'ai pas accès non plus aux fichiers avec l'attribut Système ('S'), mais en principe ceux-là on n'a pas trop besoin de les lister... Quand tu dis "chaque fois que je clique sur un dossier..." je comprends un fichier, et non pas un dossier, exact ? Concernant la fonction 'Exécuter' un fichier, il y a effectivement une faille dans le sous-programme Execf, le chemin de fichier est incorrect, il faut lire: - Code:
-
EXECUTE_WAIT CHR$(34) + f$ + CHR$(34) avec f$ au lieu de a$. Je corrige le source ci-dessus. @papydal effectivement il ne doit pas trouver l'anti-slash \ dans le test pour remonter d'un répertoire, mais pourtant il doit bien y en avoir un, si tu as accès au bouton flèche ? (en principe le bouton est caché si on est déjà sous la racine du disque). Si tu peux le reproduire, peux-tu insérer la ligne MESSAGE rep$ juste après le Preced: ligne 123, pour voir ce qu'il y a dedans à ce moment-là ? Peut-être quelque part la variable rep$ est-elle détruite et qu'il faut la recharger en début du sous-programme par rep$ = TEXT$(21) mais j'ai des doutes, je n'arrive pas à le reproduire. ps non, mauvaise idée, si on a modifié l'édit manuellement ça ne marchera pas. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| | | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 20:05 | |
| Salut JL35 Le test à la ligne 59 - Code:
-
rep$ = TEXT$(21):IF RIGHT$(rep$,1) = "" THEN rep$ = LEFT$(rep$, LEN(rep$)-1)
est un test inexact, puisque si la chaine rep$ est vide (RIGHT$(rep$,1) = "" (donc de longueur nulle), on ne peut pas en extraire une chaine de longueur negative ! Avant la ligne127 - Code:
-
TEXT 21, LEFT$(rep$, i%-1)
Si la sortie de la boucle était le résultat de EXIT_FOR, la variable i% est positive et la ligne ci-dessus est correcte, mais si la sortie de la boucle était le resultat de NEXT i%, alors i% est obligatoirement nulle et donc ‘TEXT 21, LEFT$(rep$,i%-1)’ est une erreur ! Donc, j’ai corrigé ainsi : Ligne 59, j’ai mis le test en REM Avant la ligne 127, j’ai ajouté le test - Code:
-
IF i% = 0 then i% = 1
Après ces 2 modifications, il n’y a plus de message d’erreur ‘ (52) Not correct string expression.Function call with negative value.Line :127’ Mais quand je clique sur un fichier quelconque, LISTER, EXECUTER, DUMP, COPIER, etc. ----> message d’erreur ‘impossible de trouver le fichier …’, ou ‘ cannot open file…, ou ‘file does not exist… J’ai changé le répertoire de départ (ligne 8 ) : rep$ = "d:" Exécution correcte mais si je clique ensuite sur l‘un des répertoires affichés ---> message d’erreur ‘ List index out of bounds(0)’ Si je change le répertoire de départ (ligne 8 ) : rep$ = "d:\" ---> message d’erreur ‘List index out of bonds(0)’ Si je change le répertoire de départ (ligne 8 ) : rep$ = "d:\panoramic"» ---> exécution correcte, mais si je clique ensuite sur l’un des répertoires affichés ---> message d’erreur ‘List index out of bounds(0) J’espère que ces explications (si je me suis bien exprimé !), t’aideront à améliorer ton programme. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 20:51 | |
| Bon, je crois que j'ai trouvé la cause de tous nos malheurs (ou la plupart). C'est la faute du Forum ! Il n'aime pas l'anti-slash ' \ ' tout seul entre guillemets, dans le code donné, et partout il le fait sauter, ce qui fait qu'il ne reste plus que les deux guillemets tout seuls qui ont l'air un peu idiots, puisque ça ne veut rien dire. Ainsi par exemple la ligne 59 que tu cites: rep$ = TEXT$(21):IF RIGHT$(rep$,1) = "" THEN rep$ = LEFT$(rep$, LEN(rep$)-1) ne veut plus rien dire une fois que le \ a disparu d'entre les guillemets ! Et merci papydall d'avoir cité la ligne, ce qui m'a mis la puce à l'oreille !
C'est pour ça que ça marchait chez moi et pas chez vous !
Bon, je reposte le programme en entier en remplaçant partout l'anti-slash entre guillements par CHR$(92), à 8 endroits quand même, ce qui revient au même, en espérant qu'il ne me le fera pas sauter cette fois-ci ! Réessayez avec cette version s'il vous plait ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:07 | |
| La plupart des fonctions marchent bien, mais pas l'ouverture des répertoires quand on clique dessus pour moi. Quand on entre le chemin, ça fonctionne mais le clic sur un répertoire le considère comme un fichier et m'ouvre le menu pour lister, faire un edit hex, executer ... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:12 | |
| Aïe, alors là je ne comprends pas, ça marche très bien chez moi... il y a bien <REP> en tête pour les répertoires ? le critère se fait là-dessus... - Code:
-
Trait: a$ = ITEM_INDEX$(1) IF LEFT$(a$, 1) = "<" ' c'est un répertoire IF LEFT$(a$, 5) = "" zzut, je m'aperçois que le forum me mange la moitié des caractères | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:19 | |
| Il faut non seulement remplacer l'anti-slash par chr$(92), mais aussi une suite de plusieurs espaces entre guillemets par string$(n," "). Les espaces sont mangés aussi, et cela touche certainement d'autres caractères spéciaux. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:36 | |
| C'est pas bien pratique tout ça... ni rassurant, quand on pense qu'il suffit d'un caractère erroné pour que rien ne marche ...
Je pensais bien que tout ce qui est entre les balises code était intouchable, et que les balises étaient d'ailleurs faites pour ça ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:38 | |
| Hum Klaus, tu penses que tu pourrais faire un préparateur de sources pour la publication sur le forum ? Enfin c'est vraiment con que le forum touche à ce qu'il y a entre les [ code ] et [ /code ] Normalement, ces balises servent à ça ... Le forum va être beaucoup moins convivial si on est obligé de poster ces sources en zippé ...
Sinon, en effet JL35, il manque le <REP> devant les répertoires | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:43 | |
| Dans ces conditions, évidemment, mais je me demande bien pourquoi ! Il faudrait pouvoir voir le fichier généré par le DIR, ou le DLIST 11... En position 22 sur la ligne il doit y avoir pour les répertoires
PS je m'aperçois que c'est n'importe quoi, dans un des posts précédents
Dernière édition par JL35 le Lun 4 Juin 2012 - 22:46, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:44 | |
| Maintenant, c’est …. Parfaitement parfait ! Je ne rencontre pas le bug signalé par Jicehel. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 22:50 | |
| Je m'aperçois que c'est n'importe quoi ! dans un de mes posts précédents j'avais cité: - Code:
-
Trait: a$ = ITEM_INDEX$(1) IF LEFT$(a$, 1) = "<" ' c'est un répertoire IF LEFT$(a$, 5) = "" la dernière ligne est idiote (le contenu a sauté), je l'avais éditée en = (guillemet) < REP > (guillemet) , (je détache exprès) je valide, ça réapparaît, ok. Et puis je relis mon post plus tard, et le contenu a redisparu ! Ca ne va pas, le contenu entre les balises code doit être intégralement respecté, sinon ça ne peut pas marcher, je n'ai jamais vu ça sur un autre forum (freebasic entre autres). Ce n'est pas la peine de déposer du code si des caractères sautent, quels qu'ils soient, il peut y avoir n'importe quoi dans un code. Et je suis obligé de réediter, parceque mon entre apostrophes a sauté lui aussi ! je mets donc (guillemet), tiens ça passe ! pour le moment... Et je constate aussi que ce qui est entre chevrons (< >) est sujet à disparition Merci papydall, au moins un content ! | |
| | | Invité Invité
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:02 | |
| Bonjour JL35 non Bonsoir J'avais fait un utilitaire pour passer du code html dans le listing. Normalement il devrait marcher: https://panoramic.1fr1.net/t1729-utilitaire-pour-mettre-un-code-dans-un-fichier-html.Il se peut que j'en ai oublié, mais tout ce qui me gênait, était transformé en code que le HTML lit, et la présentation dans le listing est restituée. A voir. Si je me souvient bien, tu fais une copie de ton programme, et tu lances l'exécution. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:05 | |
| Merci cosmos, ça peut évidemment être intéressant, mais ça me révolte quand même qu'on soit obligé de convertir son source dans un autre langages pour le poster ici, alors que c'est un forum de programmation et que les balises sont prévues pour ça ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:09 | |
| JUe suis d'accord avec toi, JM35. Ce n'est absolument pas normal. Bientôt, il faudra convertir tout source en représentation hexadécimale, et avoir un petit programme Panoramic pour produire ce code à partir d'un fichier bas et pour le reconstituer ! C'est vraiment n'importe quoi !
D'ailleurs, dans la même veine, essaie d'arranger ton texte dans un post avec des indentations, et même entre bornes de citation (quote) - ça ne marche pas. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:17 | |
| On est bien d'accord, ce sont pourtant des caractères courants en programmation, les guillemets, apostrophes, chevrons. C'est comme les chiffres qui se transforment en smileys en plein milieu du code (comme dans un de tes posts précédents). Ca prouve qu'on continue à rechercher des caractères spéciaux et à les traiter même entre les balises code, et ça c'est un bug du programme du forum ! J'espère que Jack pourra faire remonter ça à qui de droit... s'il trouve un peu de temps ! Bon, je vais essayer de réfléchir à tout ça
Dernière édition par JL35 le Lun 4 Juin 2012 - 23:19, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:19 | |
| - Citation :
- Bon, je reposte le programme en entier en remplaçant partout l'anti-slash entre guillements par CHR$(92), à 8 endroits quand même, ce qui revient au même, en espérant qu'il ne me le fera pas sauter cette fois-ci !
Réessayez avec cette version s'il vous plait ! J’ai rerechargé le programme : tous les caractères ont répondus présent à l’appel et le programme fonctionne parfaitement !! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:21 | |
| Merci papydall, je vais m'endormir serein (non, pas serin !) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:25 | |
| Je confirme, maintenant, ça marche nickel ... | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Le petit explorateur Lun 4 Juin 2012 - 23:37 | |
| Bonsoir tout le monde, Je confirme également que cela marche bien maintenant, mais j'ai quand même un bug! Quand on clique sur un répertoire dont le nom contient un caractère comme é ou è ou ï ou ù (je n'ai pas essayé tout les caractères accentués) j'ai le message list index out of bounds(0). Je crois que c'est peut-être du à la fonte utilisée pour l'affichage. Il faut peut-être utilisé une fonte à largeur de caractère fixe et qui accepte les caractères accentués et spéciaux. Je ne vois que "Terminal" A+ | |
| | | Contenu sponsorisé
| Sujet: Re: Le petit explorateur | |
| |
| | | | Le petit explorateur | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |