Batya писал(а):Если были ошибки, выдается их список.
Отлично. Есть ещё одна бяка... на файлах в формате Unicode сообщение выдаётся, но файл перезаписывается пустым. Или файл не трогать, или (мечты, мечты...) сделать поддержку Unicode.
Batya писал(а):Read-only надо пропустить (как сейчас) или сделать, чтобы перезаписывались?
Если с Unicode не работает, то не менять, но сообщение об ошибке выдать.
Скрипт хочу использовать не только для *.ini и замены на относительный путь. Файл с Unicode легко не заметить и надо знать, что он не обработан.
GGS
Я читаю текст, и если не нахожу в нём искомой строки, то тихо перехожу к следущему файлу. Так что ошибки для Unicode-файла не будет.
В принципе, я смогу нормально вытащить Unicode-текст, но я должен сразу знать, что это Unicode.
Если кто-нибудь скажет, как однозначно идентифицировать, что это Unicode, то сделаю работу с ним.
Batya писал(а):если не нахожу в нём искомой строки, то тихо перехожу к следущему файлу
Если замена не производилась, по причине: то ли это Unicode, то ли текста действительно нет; можно ли вдобавок к "тихо перехожу" в окне ошибок вывести, например, "Текст не найден"?
Юникод-файлы с маркером идентифицируются по маркеру, файлы без маркера проще простого идентифицировать, если известно, где в нем английский текст - они двоичные, и в английском тексте каждый второй байт равен нулю. Для INI-файлов вполне достаточное условие юникодности файла - второй байт равен 0 (первым будет либо квадратная скобка, либо пробел или символ комментария, короче, в любом случае символ из первой половины кодовой таблицы, значит, второй байт обязан быть равным 0).
Таким образом, либо первый байт равен 0xFF, а второй - 0xFE, либо второй равен 0 - условие юникодности корректного INI-файла.