Post by Gucky_87 » 23 Nov 2017, 06:31
Huhu zusammen,
ersmtal den Code, um den es geht:
Code: Select all
scanFileForBinary( filePath, byref searchBinary, searchBinarylength )
{
if !FileExist( filePath )
return -1
Offset := 0
fileObj := fileOpen( filePath, "r" )
Loop
{
if ( fileObj.ReadUChar() = numGet( searchBinary, Offset, "UChar" ) )
{
Offset++
if ( Offset = searchBinarylength )
{
foundPosition := fileObj.pos - Offset
fileObj.Close()
return %foundPosition%
}
}
else if ( offset )
fileObj.pos -= ( Offset - 1 ), Offset := 0
}
Until fileObj.AtEOF
fileObj.Close()
}
Diesen hatte mir (glaube ich jedenfalls) just me gepostet.
Die Routine klappt, mir ist aber aufgefallen, dass, obgleich '
fileObj.Close()' angegeben ist, dieses nicht zu funktionieren scheint. Ich kann z.B. entsprechende Dateien, die durch diese Routine geöffnet wurden, nicht löschen, verschieben, umbenennen, etc.
Oder mache ich was falsch?
Grüße,
Gucky.
Huhu zusammen,
ersmtal den Code, um den es geht:
[code]
scanFileForBinary( filePath, byref searchBinary, searchBinarylength )
{
if !FileExist( filePath )
return -1
Offset := 0
fileObj := fileOpen( filePath, "r" )
Loop
{
if ( fileObj.ReadUChar() = numGet( searchBinary, Offset, "UChar" ) )
{
Offset++
if ( Offset = searchBinarylength )
{
foundPosition := fileObj.pos - Offset
fileObj.Close()
return %foundPosition%
}
}
else if ( offset )
fileObj.pos -= ( Offset - 1 ), Offset := 0
}
Until fileObj.AtEOF
fileObj.Close()
}
[/code]
Diesen hatte mir (glaube ich jedenfalls) just me gepostet.
Die Routine klappt, mir ist aber aufgefallen, dass, obgleich '[i]fileObj.Close()[/i]' angegeben ist, dieses nicht zu funktionieren scheint. Ich kann z.B. entsprechende Dateien, die durch diese Routine geöffnet wurden, nicht löschen, verschieben, umbenennen, etc.
Oder mache ich was falsch?
Grüße,
Gucky.