"Yet another" HexaView

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

"Yet another" HexaView

Message par Flype »

N'ayant pas trouvé de code qui me va bien pour un HexaView,

En voici un simple mais efficace, facile à intégrer dans un programme.

Code : Tout sélectionner

EnableExplicit

Procedure.s PeekAscii(*mem.BYTE, length.l)
  
  Protected text.s
  Protected *tmp.BYTE = *mem + length - 1
  
  While *mem < *tmp
    If (*mem\b < 32) Or (*mem\b > 126)
      text + "."
    Else
      text + Chr(*mem\b)
    EndIf
    *mem + 1
  Wend
  
  ProcedureReturn text
  
EndProcedure

Procedure.s HexaView(*memAddr.BYTE, memSize.l, columnCount.l = 16, baseAddr.l = 0)
  
  Protected *mem1.BYTE  = *memAddr
  Protected *mem2.BYTE  = *memAddr + memSize
  Protected lineWidth   = (13+(columnCount*3))
  Protected columnIndex =  0
  Protected bar.s, line.s, text.s
  
  bar = "+----------+-"
  bar + RSet("", columnCount*3, "-")
  bar + "+-"
  bar + RSet("", columnCount*1, "-")
  bar + "-+" + #CRLF$
  
  For columnIndex = 0 To columnCount - 1
    line + RSet(Hex(columnIndex), 2, "0") + " "
  Next
  
  text + bar
  text + "|  Offset  | " + line + "| "
  text + Space(columnCount + 1) + "|" + #CRLF$
  text + bar
  
  columnIndex = 0
  line = "| " + RSet(Hex(baseAddr, #PB_Long), 8, "0") + " | "
  While *mem1 < *mem2
    line + RSet(Hex(*mem1\b, #PB_Byte), 2, "0") + " "
    *mem1 + 1 : columnIndex + 1
    If (columnIndex >= columnCount) Or (*mem1 >= *mem2)
      text + LSet(line, lineWidth, " ") + "| "
      text + LSet(PeekAscii(*mem1 - columnIndex, columnIndex + 1), columnCount + 1, " ") + "|" + #CRLF$
      line = "| " + RSet(Hex(baseAddr + *mem1 - *memAddr, #PB_Long), 8, "0") + " | "
      columnIndex = 0
    EndIf
  Wend
  
  ProcedureReturn (text + bar)
  
EndProcedure





; Test code

Debug HexaView(?TEST1, ?TEST2-?TEST1, 16)

DataSection
  TEST1:
  IncludeBinary #PB_Compiler_Filename
  TEST2:
EndDataSection


Le résultat, avec une police taille fixe ressemble à çà :

Image

Image

La largeur est modifiable avec l'argument columnCount.
Image
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: "Yet another" HexaView

Message par Fig »

Pratique et compact, j'aime beaucoup.
Comment tu as la couleur inversée sur le debugger ?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: "Yet another" HexaView

Message par falsam »

Et hop c'est enregistré dans ma bibliothèque de code. Merci.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: "Yet another" HexaView

Message par Flype »

Fig a écrit :Pratique et compact, j'aime beaucoup.
Comment tu as la couleur inversée sur le debugger ?
Je n'ai pas, j'ai simplement collé le résultat dans notepad++ :mrgreen:

Plus sérieusement, je cherchais surtout une option pour changer
la police de caractères utilisée par la console debug, mais y'a pas :?

A titre perso, j'utilise ce code dans un programme qui affiche
une vue Hexa dans un EditorGadget() + LoadFont("Courier New", 10).

Image
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: "Yet another" HexaView

Message par Flype »

Je suis un peu rouillé en PB, mais pour MAC et Linux
je suppose qu'il faudrait changer #CRLF$ par leur équivalent.

Code : Tout sélectionner

  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    Protected lineFeed.s = #CRLF$
  CompilerElse
    Protected lineFeed.s = #LF$
  CompilerEndIf
Image
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: "Yet another" HexaView

Message par falsam »

Flype a écrit :e suis un peu rouillé en PB, mais pour MAC et Linux
je suppose qu'il faudrait changer #CRLF$ par leur équivalent.
Je n'ai rien changé à ton code qui fonctionne de la même manière sous Mac OS.

Je suppose que Fred a associé la bonne valeur à #CRLF$ en fonction de l'OS
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: "Yet another" HexaView

Message par Flype »

@falsam

Ah cool. Merci de ton retour :!:
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: "Yet another" HexaView

Message par Kwai chang caine »

C'est rigolo...en plus d'être utile.. 8O
Fallait y penser :idea:
Merci pour le partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: "Yet another" HexaView

Message par Ar-S »

Sympa ce petit viewer. Et cool de voir un petit coin d'UAE :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: "Yet another" HexaView

Message par venom »

Bonjour,

Merci Flype. Voilà un code comme j'aime, simple mais efficace.
Merci du partage. :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: "Yet another" HexaView

Message par PAPIPP »

Bonjour Flype

Tu dis qu’il n’y a pas de choix d’une police dans debug

Avec IDE de PB dans préférence… debugueur configuration
On a la possibilité de choisir la police que l’on désire
Cocher utiliser une autre police et sur le bouton police on peut choisir :
"Courier new" par exemple

A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: "Yet another" HexaView

Message par Flype »

@PAPIPP

Oui oui j'ai remarqué depuis :mrgreen:

En bon noob qui est passé à coté ( pourtant j'avais cherché :x ) :

https://www.purebasic.fr/english/viewto ... =3&t=71422


Un peu rouillé, désolé.
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: "Yet another" HexaView

Message par Flype »

Salut a tous,

J'ai besoin d'un petit service svp, un volontaire pour me compiler un programme pour linux debian/ubuntu ?
Image
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: "Yet another" HexaView

Message par boby »

J'ai une deb 8.11 en VM si ça peut te servir.
Répondre