PureBasic

Forums PureBasic
Nous sommes le Sam 24/Aoû/2019 10:12

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
 Sujet du message: "Yet another" HexaView
MessagePosté: Mar 18/Sep/2018 20:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
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:
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Mar 18/Sep/2018 20:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1121
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 : 5.45LTS - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Mar 18/Sep/2018 20:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Et hop c'est enregistré dans ma bibliothèque de code. Merci.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Mar 18/Sep/2018 20:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Mar 18/Sep/2018 20:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
Je suis un peu rouillé en PB, mais pour MAC et Linux
je suppose qu'il faudrait changer #CRLF$ par leur équivalent.

Code:
  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
    Protected lineFeed.s = #CRLF$
  CompilerElse
    Protected lineFeed.s = #LF$
  CompilerEndIf

_________________
Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Mar 18/Sep/2018 20:38 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
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

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Mar 18/Sep/2018 20:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
@falsam

Ah cool. Merci de ton retour :!:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Jeu 20/Sep/2018 13:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6644
Localisation: Isere
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Jeu 20/Sep/2018 14:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8739
Sympa ce petit viewer. Et cool de voir un petit coin d'UAE :mrgreen:

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Jeu 20/Sep/2018 21:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2788
Localisation: Klyntar
Bonjour,

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






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Ven 21/Sep/2018 9:23 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 556
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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Dim 23/Sep/2018 22:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
@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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Dim 13/Jan/2019 12:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Jan/2004 0:26
Messages: 2433
Localisation: Nantes
Salut a tous,

J'ai besoin d'un petit service svp, un volontaire pour me compiler un programme pour linux debian/ubuntu ?

_________________
Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: "Yet another" HexaView
MessagePosté: Dim 13/Jan/2019 14:27 
Hors ligne

Inscription: Jeu 07/Juin/2007 22:54
Messages: 261
J'ai une deb 8.11 en VM si ça peut te servir.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye