'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. |