-
Notifications
You must be signed in to change notification settings - Fork 44
Description
If NOT StringMid($record,1,8) = '46494C45' Then
В этой строке - две грубейших ошибки. Во-первых, автор забыл "0x" перед "46494С45" (это проверка наличия строки FILE в начале записи MFT). Сама по себе работа с бинарными данными в виде шестнадцатеричного строкового представления (сравнение, обрезание и так далее) сразу бросается в глаза как порочная практика в этой программе, и стоило ожидать, что она приведёт к ошибке. И казалось бы, автор должен был это заметить, ведь теперь условие в этой строке должно было бы выполняться каждый раз (и каждый раз выходила бы ошибка), но нет: в этой же строке автор допустил вторую ошибку - неправильное представление о приоритете операторов. Оператор NOT имеет больший приоритет, чем оператор сравнения, а автор забыл (или не знал) об этом. В результате теперь всё наоборот: условие в этой строке НИКОГДА не выполняется, и данная проверка не выполняется.