Xojo Conferences
MBSSep2018MunichDE
XDCMay2019MiamiUSA

Platforms to show: All Mac Windows Linux Cross-Platform

/DataTypes/HexDump
Function:
Required plugins for this example: MBS DataTypes Plugin, MBS Util Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /DataTypes/HexDump
This example is the version from Sat, 19th Jul 2013.
Project "HexDump.rbp"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control efShowData Inherits TextArea
ControlInstance efShowData Inherits TextArea
EventHandler Sub Open() me.text = "" End EventHandler
EventHandler Sub TextChange() me.ScrollPosition = 0 End EventHandler
End Control
Control pbDump Inherits PushButton
ControlInstance pbDump Inherits PushButton
EventHandler Sub Action() Dim f As FolderItem Dim b As BinaryStream Dim n As Integer Dim mb As MemoryBlock // open the included gif file to display in hex dump format f = GetOpenFolderItem("") if f <> nil and f.exists then b = f.OpenAsBinaryFile if b <> nil then n = f.Length stSize.Text = Format(n, "#,###") + " bytes" mb = NewMemoryBlock(n) mb.StringValue(0,n) = b.Read(n) b.close HexOut mb else Beep MsgBox "Unable to open thumbsup.gif file as a binarystream" end if end if End EventHandler
End Control
Control stSize Inherits Label
ControlInstance stSize Inherits Label
EventHandler Sub Open() me.text = "" End EventHandler
End Control
EventHandler Sub Open() self.top =50 self.Left = (Screen(0).AvailableWidth - self.Width)/2 End EventHandler
Sub HexOut(mb As MemoryBlock) // This method is passed a memoryblock containing the data to be // displayed. The method formats the data, 16 bytes at a time in a hex // dump format. Three MBS features are used: // StringHandleMBS for fast string building, HexstringMBS to format // the 16 bytes in hex with spacing, and ReplaceNonPrintableCharactersMBS // to format the 16 bytes to the right of the hex display showing the printable // characters. Dim i, j, k, ln, m, n, pos As Integer Dim ltrs(15), s, theHex, theLtrs, thePos As String Dim r As StringHandleMBS r = new StringHandleMBS n = mb.Size - 1 // number of bytes in memoryblock pos = 0 k = 16 for i = 0 to n step 16 // walk through memoryblock 16 bytes at a time thePos = right("00000" + hex(i), 6) + ": " // format offset part of string ****** if i + 16 > n then k = n - i + 1 // walking past end of memoryblock? s = mb.StringValue(i, k) // get up to 16 bytes from memoryblock as a string theHex = HexstringMBS(s, 2, 16, "", "", " ", " ") // get hex version of string ****** theLtrs = ReplaceNonPrintableCharactersMBS(s) // get character representation ***** //s = thePos + theHex + " " + theLtrs + gcr r.Add thePos + theHex + " " + theLtrs + EndOfLine //efShowData.AppendText s // append to editfield ln = ln + 1 if ln = 16 then // output a blank line after every 16th printed line r.Add " " + EndOfLine //efShowData.AppendText " " + gcr ln = 0 end if Next i efShowData.Text = r.copy End Sub
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project

Feedback, Comments & Corrections

The items on this page are in the following plugins: MBS DataTypes Plugin.




Links
MBS Xojo Chart Plugins