I have a .tar file (10MB) in hexidecimal code, I need manipulate and output the data in the tar file onto the web. First, I read the .tar file into program as one string and I want to parse up the string into pieces at every space (bar), and then write to another file line by line. I wrote ParseString subroutine, for some reason, it can only parse the string if the reading file is a text-only format, it doesn't parse string if the reading file is other formats, how can I break this file (string) into pieces? Help!


Option Explicit ' General declaration
Dim objFS As New FileSystemObject

Private Sub openAndReadWriteFile()

Const forreading = 1
Const TristateFalse = 0

Dim mFile As File 'Another file object
Dim objTS 'TextStream object for reading file
Dim strSearchThis As String
Dim RTxtStream As TextStream

'Open the reading tar file
Set mFile = objFS.GetFile("C:\1071-4\Tut08\JAN1504.tar")
Set objTS = mFile.OpenAsTextStream(forreading, TristateFalse)

strSearchThis = objTS.Read(mFile.Size) 'Read file

Call ParseString(strSearchThis)

Call objTS.Close
'Call mTxtStream.Close

End Sub

Private Sub Form_Load()
Call openAndReadWriteFile ' Open and read file
End Sub

Sub ParseString(StringToParse As String, Optional Delimiter As String = " ")
Dim mTxtStream As TextStream 'TextStream object for writing file
Dim mFile As File

'Create and open the writing file
Call objFS.CreateTextFile("c:\1071-4\Tut08\fastwrite8.txt")
Set mFile = objFS.GetFile("C:\1071-4\Tut08\fastwrite8.txt")
Set mTxtStream = mFile.OpenAsTextStream(ForWriting)

Dim lngStartPos As Long
Dim lngNextPos As Long
Dim strTemp As String

lngStartPos = 1

Do
lngNextPos = InStr(lngStartPos, StringToParse, Delimiter)

If lngNextPos = 0 Then
' For when we get to the end of the file
strTemp = Mid$(StringToParse, lngStartPos, Len(StringToParse) - lngNextPos + 1)
Else
strTemp = Mid$(StringToParse, lngStartPos, lngNextPos - lngStartPos + 1)
End If

Call mTxtStream.WriteLine(strTemp)

lngStartPos = lngNextPos + 1
DoEvents
Loop Until lngNextPos = 0

End Sub


The .tar file looks like this:

FF14073900000F01040451 FF1B0900000000000000009C9C FF100901030500010203008796 FF110901040700010102001626 FF120B84697EF064726BF080F0403C FF14073900000F01040451 FF1B0900000000000000009999 FF10090102020000000102878F FF11090101010000000102171D FF120B686489F0F0F06D5A80F0409C