JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Petite sub de dump fichier Mer 8 Oct 2014 - 16:58 | |
| Ça peut servir à quiconque s'intéresse à la structure des fichiers, plutôt binaires mais pas forcément, même ponctuellement, pour un type de fichier donné (n'est-ce pas ygeronimi). Pour être plus pratique à utiliser c'est sous forme d'une sub indépendante, appelable depuis n'importe où dans un programme. Paramètres d'appel: le fichier à dumper, les coordonnées d'affichage et la hauteur de la fenêtre. A l'appel, la sub génère un Form particulier qui contiendra tout le nécessaire. Ce Form sera supprimé en sortie de la sub. Quatre boutons pour naviguer dans le dump: début du fichier, page précédente, page suivante, fin de fichier. Et il est possible de modifier la hauteur de la fenêtre d'affichage à la souris en cours d'utilisation. - Code:
-
SUB DumpF(f$,x%,y%,h%) ' dump hexa de f$, affiché en x%,y% de l'écran, de hauteur h% pixels ' (on peut modifier la hauteur à la souris en cours d'utilisation) IF LABEL("Butdum") = 0 THEN LABEL Butdum IF LABEL("Dumdum") = 0 THEN LABEL Dumdum IF LABEL("Clodum") = 0 THEN LABEL Clodum DIM_LOCAL ff%,fh%,fd%,hl%,xd%,tp%,ads%,di%,dj%,dk%,ba$,ca$,cc$,sz%,nl%,rda$ fh% = h%: ' hauteur demandée du form ff%=1000: FORM ff%: TOP ff%,y%: LEFT ff%,x%: WIDTH ff%,630: HEIGHT ff%,fh% BORDER_SMALL ff%: ON_CLOSE ff%,Clodum LIST ff%+1: PARENT ff%+1,ff%: TOP ff%+1,0: WIDTH ff%+1,WIDTH(ff%)-16 HEIGHT ff%+1,fh%-35: FONT_NAME ff%+1,"Lucida Console": FONT_SIZE ff%+1,10 BUTTON ff%+2: PARENT ff%+2,ff%: TOP ff%+2,1: WIDTH ff%+2,22: ' début fichier LEFT ff%+2,WIDTH(ff%+1)-23: CAPTION ff%+2,CHR$(235) BUTTON ff%+3: PARENT ff%+3,ff%: TOP ff%+3,TOP(ff%+2)+25: WIDTH ff%+3,WIDTH(ff%+2) LEFT ff%+3,LEFT(ff%+2): CAPTION ff%+3,CHR$(233): ' page précédente BUTTON ff%+4: PARENT ff%+4,ff%: TOP ff%+4,TOP(ff%+3)+25: WIDTH ff%+4,WIDTH(ff%+2) LEFT ff%+4,LEFT(ff%+2): CAPTION ff%+4,CHR$(234): ' page suivante BUTTON ff%+5: PARENT ff%+5,ff%: TOP ff%+5,TOP(ff%+4)+25: WIDTH ff%+5,WIDTH(ff%+2) LEFT ff%+5,LEFT(ff%+2): FONT_BOLD ff%+5: CAPTION ff%+5,"Fin": ' fin fichier FOR di%=ff%+2 TO ff%+4: FONT_NAME di%,"Wingdings": NEXT di% FOR di%=ff%+2 TO ff%+5: ON_CLICK di%,Butdum: NEXT di%
FILEBIN_OPEN_READ 9,f$: sz% = FILEBIN_SIZE(9): FILEBIN_CLOSE 9 CAPTION ff%,f$+" ("+STR$(sz%)+" octets = "+HEX$(sz%)+"h)" hl% = TEXT_HEIGHT("AB",ff%+1): ' hauteur d'une ligne, en pixels fd% = 0: xd% = 0: GOSUB Dumdum WHILE fd% = 0 IF HEIGHT(ff%) <> fh%: ' hauteur du form ff% modifiée par l'utilisateur fh% = HEIGHT(ff%): HEIGHT ff%+1,fh%-35: GOSUB Dumdum END_IF WAIT 300 END_WHILE DELETE ff%: EXIT_SUB: ' clic de fin ' .............................................................................. Dumdum: nl% = INT(fh%/hl%)-3: ' nb de lignes affichables tp% = 16*nl%: ' nb total d'octets affichés dans la page IF xd%>(sz%-tp%) THEN xd% = sz%-tp% IF xd%<0 THEN xd% = 0 FILEBIN_OPEN_READ 9,f$: FILEBIN_POSITION 9,xd%: ba$ = FILEBIN_HEXA_READ$(9,tp%) FILEBIN_CLOSE 9 CLEAR ff%+1 ads% = xd%: rda$ = "" FOR di% = 1 TO LEN(ba$) STEP 32 rda$ = RIGHT$("00000"+HEX$(ads%),6) + ": ": ca$ = " " FOR dj% = di% TO di%+30 STEP 2 cc$ = MID$(ba$, dj%, 2) rda$ = rda$ + cc$ + " ": dk% = HEX(cc$) IF dk% > 31 ca$ = ca$ + CHR$(dk%) ELSE ca$ = ca$ + "." END_IF NEXT dj% ITEM_ADD ff%+1,rda$+ca$ ads% = ads% + 16 NEXT di% RETURN ' .............................................................................. Butdum: di% = NUMBER_CLICK: ' bouton cliqué IF di% = ff%+2 THEN xd% = 0: ' début du fichier IF di% = ff%+3 THEN xd%=xd%-tp%: ' page précédente IF di% = ff%+4 THEN xd%=xd%+tp%: ' page suivante IF di% = ff%+5 THEN xd%=sz%-tp%: ' Fin du fichier GOSUB Dumdum RETURN ' .............................................................................. Clodum: fd% = 1: ' clic sur la croix de fin RETURN END_SUB
Dernière édition par JL35 le Mer 8 Oct 2014 - 18:30, édité 1 fois | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 8 Oct 2014 - 18:28 | |
| Pour ta punition, je la publierai sur le site du mag... | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Petite sub de dump fichier Mer 8 Oct 2014 - 18:31 | |
| J'aime bien ce genre de punition, je suis un peu maso sans doute... Cela dit, si ça peut en intéresser certains, tant mieux ! (il y a eu quelques petites modifs par rapport à la version initiale) | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 8 Oct 2014 - 18:51 | |
| La sentence a été exécutée ! La sub est sur le site du Mag (Procédures-Dump-DumpF) ! Deviendrai-je tyrannique ?.... | |
|
Contenu sponsorisé
| Sujet: Re: Petite sub de dump fichier | |
| |
|