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.


(openfilehex.html)- by Paolo Puglisi - Modifica del 25/3/2019