On Feb 16, 2007, at 1:36 PM, Kevin Windham wrote:
On Feb 16, 2007, at 2:29 PM, Tim Jones wrote:
Hi Folks,
I'm trying to track down the best way to parse a binary file,
searching for specific sequences of bytes. I assume that reading
the file into a MemoryBlock (the files tend to be a few 100K at
worst) will be the best solution, but what would then be used to
walk though the memoryblock to locate the sequence of bytes (sort
of like InStrB)?
I would just use InStrB on a string. As long as you don't do "bad
stuff" then it should be reasonably quick. Of course I don't know
what kind of files they are or what you're using them for, but I've
parsed decent sized files before using InStrB and it didn't take an
unreasonable amount of time.
I was not doing random searches though. I was parsing the file from
beginning to end. So it was something like, look for first marker
then from there look for second marker and stuff all those bytes
into a variable. Then continue from where I left off and repeat
until the EOF.
Thanks Kevin and Charles. It never dawned on me to use a String.
I'm so used to CStrings and the NULL that the thought of all the
NULL's written into the file sent me searching elsewhere.
So here's my pseudo code:
Dim i, keyOffset As Integer
Dim f As FolderItem
Dim ft As TextInputStream
f = GetFolderItem(filePath, FolderItem.PathTypeShell)
// check for bad f instance
fs = f.OpenAsTextFile
theFileString = fs.ReadAll
keyOffset = 0
Do
keyOffset = InStr(theFileString, keyOffset + 1)
// Process located data
Loop Until keyOffset >= LenB(theFileString
Any holes?
Tim
--
Tim Jones
[EMAIL PROTECTED]
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>