OpenFileHex




'Mettere questa dichiarazione in generale

Private FileIn as Sting
'-------------------------------------------


Private Sub Command1_Click()
List1.Clear
List1.FontName = "Courier new"
List1.FontSize = 8
List1.Height = Form1.ScaleHeight - List1.Top
Dim numFile As Integer
On Error Resume Next
CommonDialog1.ShowOpen
If Err Then Exit Sub
numFile = FreeFile
Open CommonDialog1.filename For Binary As #numFile
FileIn = Space(LOF(numFile))
Get #numFile, , FileIn
Close #numFile
' inzia la conversione


Dim controllo As Long
controllo = Hex(Len(FileIn))
' lungezza massima dell'espressione che indica

' l'avanzamento dei Bytes


For i = 1 To Len(FileIn)
c = c + 1
car = Mid(FileIn, i, 1)
hx = Hex(Asc(car))
If Len(hx) = 1 Then hx = "0" & hx
riga = riga & hx & " "
carW = car
If Val(Asc(car)) < 32 Then carW = Chr(1)
' sostitusce i caratteri non stampabili con il carattere ""


setCar = setCar & carW ' accoda i caratteri ascii

If c = 10 Or i = Len(FileIn) Then
' Or i=.. prevede che la lunghezza in Bytes del file aperto

' non sia esattamente un multiplo di 10


diff = Len(controllo) - Len(Hex(i))
If i < 11 Then diff = Len(controllo)
For equo = 1 To diff
Bytestr = Bytestr & "0"
Next equo
' numera le righe in base ai Bytes gia' letti espressi in esadecimale


If i > 10 Then Bytestr = Bytestr & Hex(i)
n = 4
If c < 10 Then n = 34 - Len(riga)
' il valore 34 e' condizionale solo

' alle misure del form e del listbox


riga = Bytestr & Space(6) & riga & Space(n) & setCar
setCar = ""
Bytestr = ""
List1.AddItem riga
riga = ""
c = 0
End If
hx = 0
Next i
End Sub

'L'operazione potrebbe essere lenta con grossi file perche'

'il codice non e' ottimizzato.

Si crea un form con una CommandDialog(CommonDialog1),
un Button (Command1), un ListBox (list1).
E' molto importante, per visualizzare bene il codice
esadecimale, che il form abbia una larghezza di almeno
7095 twiped il list1 di 6600 twip.











( openfilehex.html )- by Paolo Puglisi - Modifica del 17/12/2023