version 6.30 0 Form1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 638 428 1 FormLib.dll 0 2 Port:Serial FormLib:FormLib Sub designer addform(Form1,"Hex Viewer","",220,220,220)@ addtextbox(form1,TextBox1,30,140,575,250,"",0,0,0,255,255,255,True,True,True,9)@ End Sub @EndOfDesignText@Sub Globals 'Declare the global variables here. End Sub Sub App_Start Form1.Show Initialise TextBox1.Text=Parse("The code can handle all possible bytes in the file. Including non-printable ones like crlf"&crlf&"and others like"&Chr(9)&Chr(26)) End Sub Sub Parse(String) ' Msgbox(StrLength(String)) CompleteLines=Int(StrLength(String)/16) CharsRemain=StrLength(String) Mod 16 For i=1 To CompleteLines Parsed=Parsed&Address(i-1)&" " HexBytes="" Chars="" For j=(i-1)*16 To ((i-1)*16)+15 HexBytes=HexBytes&DecToHex(Asc(StrAt(String,j)))&" " Chars=Chars&CheckChar(StrAt(String,j)) Next Parsed=Parsed&HexBytes&" "&Chars&crlf Next If CharsRemain>0 Then Parsed=Parsed&Address(CompleteLines)&" " HexBytes="" Chars="" For k=CompleteLines*16 To (CompleteLines*16)+(CharsRemain-1) HexBytes=HexBytes&DecToHex(Asc(StrAt(String,k)))&" " Chars=Chars&CheckChar(StrAt(String,k)) Next Space="" For l=1 To 16-CharsRemain Space=Space&" " Next Parsed=Parsed&HexBytes&Space&" "&Chars&crlf End If Return Parsed End Sub Sub DecToHex(Dec) 'Input range of 0-255 and will return a two character Hex string Hex="" m=Int(Dec/16) l=Dec Mod 16 Select m Case 10 Hex="A" Case 11 Hex="B" Case 12 Hex="C" Case 13 Hex="D" Case 14 Hex="E" Case 15 Hex="F" Case Else Hex=m End Select Select l Case 10 Hex=Hex&"A" Case 11 Hex=Hex&"B" Case 12 Hex=Hex&"C" Case 13 Hex=Hex&"D" Case 14 Hex=Hex&"E" Case 15 Hex=Hex&"F" Case Else Hex=Hex&l End Select Return Hex End Sub Sub Initialise FormLib.New1("Form1",B4PObject(1)) FormLib.ChangeFont("TextBox1","Courier New") ' FormLib.ChangeFont("Label5","Courier New") FormLib.MinimizeBox=True End Sub Sub Form1_Close 'Clean up after me when finished :) FormLib.Dispose End Sub Sub Address(Line) 'Generates the address in Hexadecimal at the start of each line a=Int(Line/65536) b=Int((Line-(a*65536))/256) c=Line Mod 256 String="0"&DecToHex(a)&DecToHex(b)&DecToHex(c)&"0" Return String End Sub Sub CheckChar(Char) 'Check for non-printable character If Asc(Char)<32 Then Return "." Else Return Char End If End Sub