Страница 2 из 2
Добавлено: Пн апр 19, 2010 15:17
GGS
Batya писал(а):Если были ошибки, выдается их список.
Отлично. Есть ещё одна бяка... на файлах в формате Unicode сообщение выдаётся, но файл перезаписывается пустым. Или файл не трогать, или (мечты, мечты...) сделать поддержку Unicode.
Batya писал(а):Read-only надо пропустить (как сейчас) или сделать, чтобы перезаписывались?
Пропустить (как сейчас), сообщение ведь выдаётся.
Добавлено: Пн апр 19, 2010 15:43
Batya
GGS
А так? (Поправил скрипт выше.)
Добавлено: Пн апр 19, 2010 16:09
GGS
Batya писал(а):А так? (Поправил скрипт выше.)
Файл не меняет, но и сообщения об ошибке нет.
Добавлено: Пн апр 19, 2010 16:55
Batya
GGS писал(а):Файл не меняет
А должен?
Добавлено: Пн апр 19, 2010 18:10
GGS
Если с Unicode не работает, то не менять, но сообщение об ошибке выдать.
Скрипт хочу использовать не только для *.ini и замены на относительный путь. Файл с Unicode легко не заметить и надо знать, что он не обработан.
Добавлено: Пн апр 19, 2010 18:42
Batya
GGS
Я читаю текст, и если не нахожу в нём искомой строки, то тихо перехожу к следущему файлу. Так что ошибки для Unicode-файла не будет.
В принципе, я смогу нормально вытащить Unicode-текст, но я должен сразу знать, что это Unicode.
Если кто-нибудь скажет, как однозначно идентифицировать, что это Unicode, то сделаю работу с ним.
Добавлено: Пн апр 19, 2010 22:17
GGS
Batya писал(а):если не нахожу в нём искомой строки, то тихо перехожу к следущему файлу
Если замена не производилась, по причине: то ли это Unicode, то ли текста действительно нет; можно ли вдобавок к "тихо перехожу" в окне ошибок вывести, например, "Текст не найден"?
Добавлено: Пн апр 19, 2010 22:36
MVV
Юникод-файлы с маркером идентифицируются по маркеру, файлы без маркера проще простого идентифицировать, если известно, где в нем английский текст - они двоичные, и в английском тексте каждый второй байт равен нулю. Для INI-файлов вполне достаточное условие юникодности файла - второй байт равен 0 (первым будет либо квадратная скобка, либо пробел или символ комментария, короче, в любом случае символ из первой половины кодовой таблицы, значит, второй байт обязан быть равным 0).
Таким образом, либо первый байт равен 0xFF, а второй - 0xFE, либо второй равен 0 - условие юникодности корректного INI-файла.