Skip to content

Грубая ошибка в тексте программы #28

@paveldenton

Description

@paveldenton

If NOT StringMid($record,1,8) = '46494C45' Then

В этой строке - две грубейших ошибки. Во-первых, автор забыл "0x" перед "46494С45" (это проверка наличия строки FILE в начале записи MFT). Сама по себе работа с бинарными данными в виде шестнадцатеричного строкового представления (сравнение, обрезание и так далее) сразу бросается в глаза как порочная практика в этой программе, и стоило ожидать, что она приведёт к ошибке. И казалось бы, автор должен был это заметить, ведь теперь условие в этой строке должно было бы выполняться каждый раз (и каждый раз выходила бы ошибка), но нет: в этой же строке автор допустил вторую ошибку - неправильное представление о приоритете операторов. Оператор NOT имеет больший приоритет, чем оператор сравнения, а автор забыл (или не знал) об этом. В результате теперь всё наоборот: условие в этой строке НИКОГДА не выполняется, и данная проверка не выполняется.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions