devxlogo

Scream Through Searches With Byte Arrays

Scream Through Searches With Byte Arrays

This subroutine shows how byte arrays can speed a search though a file.The routine is called with the file name, a string to look for, a flagthat tells it to use a string variable or a byte array and a flag thattells it to look for Unicode or ANSII strings (strings in VB4 EXEs arein Unicode). My test, with ibyte set to true (use byte array) took aboutsix seconds to search though 32-bit WINWORD.EXE. The same file with ibyteset to false (use string variable) ran in about 36 seconds. The file isalmost 4 MB.

 Sub Searchfile(sFile As String, sSearch As String, ibyte _ As Boolean, iUniCode As Boolean)	'sFile - file name	'sSearch - string to search for	'ibyte - use byte array to search	'iUniCode - look for UniCode strings	Dim iHandle As Integer	Dim sTemp As String	Dim lSpot As Long	Dim lFind As Long	Dim sSearch1 As String	Dim bTemp() As Byte	'another advantage of using a byte array	'is that we can easily look for UniCode strings	If iUniCode Or (Not ibyte) Then		'this line will look for unicode strings		'when using byte arrays, regular 		'strings when using string variable		sSearch1 = sSearch	Else		'this line will look for ANSII strings 		'when looking through a byte array		sSearch1 = StrConv(sSearch, vbFromUnicode)	End If	iHandle = FreeFile	Open sFile For Binary Access Read As iHandle	If iHandle Then		sTemp = Space$((LOF(iHandle) / 2) + 1)		ReDim bTemp(LOF(iHandle)) As Byte		If ibyte Then			Get #iHandle, , bTemp			sTemp = bTemp		Else			Get #iHandle, , sTemp		End If		Close iHandle	End IfDo	If ibyte Then		lFind = InStrB(lSpot + 1, sTemp, _			sSearch1, 1)	Else		lFind = InStr(lSpot + 1, sTemp, sSearch1, 1)	End If	lSpot = lFindLoop Until lFind = 0End Sub
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist