Столкнулся с проблемой. В общем, мне надо в примерно 2000 файлах, сменить кодировку с ANSI на UTF8. Менять кодировку блокнотом согласитесь не вариант. Начал «придумывать» программу для перекодирования большого количества файлов. Получилось вот что:
code_21694.txt
Все в принципе нормально работает, вот только за исключением двух маленьких нюансов.
1. При перекодировании из ANSI в UTF8, кодировка (При открытии файла редактором Notepad++) получается не просто UTF8, а UTF8 (без BOM).
2. В конец каждого файла, не понятно почему, вставляются 3 пустые строчки.
Можно ли это исправить?
Этот топик читают: Гость
Ответов: 48
Рейтинг: -1
|
|||
карма: 1 |
| ||
файлы: 1 | code_21694.txt [2.1KB] [305] |
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
1. BOM вставляться и не должен ибо его наличие не понимают большинство программ
2. текст загружается в список методом doText, а не doAdd |
|||
карма: 27 |
|
Ответов: 1379
Рейтинг: 86
|
|||
Dilma писал(а): текст загружается в список методом doLoad, а не doAddDilma, если ты про второй StrList, то тогда может doText? |
|||
карма: 0 |
|
Ответов: 48
Рейтинг: -1
|
|||
Dilma писал(а): 2. текст загружается в список методом doLoad, а не doAddНе понял. Поясните... |
|||
карма: 1 |
|
Ответов: 4641
Рейтинг: 334
|
|||
Kuzya411 писал(а): Не понял. Поясните...в последнем strlist ты добавляешь текст методом doAdd , а надо doText |
|||
карма: 1 |
|
Ответов: 48
Рейтинг: -1
|
|||
Ravilr писал(а): в последнем strlist ты добавляешь текст методом doAdd , а надо doTextВсе понял |
|||
карма: 1 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
petrocan писал(а): то тогда может doText?да, верно |
|||
карма: 27 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, глянь. Почему я не могу перебрать SelectArray в обратном порядке ?
Туплю. project8181.rar ------------ Дoбавленo в 00.26: В прямом всё ОК ------------ Дoбавленo в 00.26: Хотел упростить и ... |
|||
карма: 25 |
| ||
файлы: 1 | project8181.rar [905B] [120] |
Разработчик
Ответов: 26164
Рейтинг: 2127
|
|||
Мне кажется, что вот это -- полный бред
Кому пришло в голову отбирать только выделенные пункты, получать их количество и подряд это количество потом выдавать, вне зависимости от выделенности. Хотя, описание к точке гласит недвухсмысленно об обратном SelectArray=Хранит флаги выделения для каждого пункта списка
а не только для выделенных ------------ Дoбавленo в 01.31: Исправлено |
|||
карма: 22 |
| ||
Голосовали: | Tad |
Ответов: 16884
Рейтинг: 1239
|
|||
Совсем другой табак. [flood]
nesco писал(а): Кому пришло в голову отбирать только выделенные пункты------------ Дoбавленo в 10.39: Kuzya411, вместо ComboBox примени ListBox в режиме MultiSelect=True. Можно использовать точку doSelectAll, а не нажимать далее 2000 раз. И, перебирая снизу вверх, удалять из списка обработанный файл. ------------ Дoбавленo в 10.42: Перед всем этим обнови ListBox с SVN ! |
|||
карма: 25 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2025-01-11 03:35:16 |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Выше- это я.
Тогда наличие function THIListBox._arr_count; себя оправдывает. |
|||
карма: 25 |
|
Разработчик
Ответов: 26164
Рейтинг: 2127
|
|||
85.64.238.11.dynamic.bara писал(а): а может SelectArray должен был хранить индексы выбранных строк ?тогда это должно было быть, сначала, отражено в описании к точке SelectArray. К примеру SelectArray=Хранит индексы выделения для пунктов списка
Но такой подход ограничивает применение метода, к примеру, мы не сможем удалить все невыделенные, тк будем всегда получать только выделенные. |
|||
карма: 22 |
|
Ответов: 3
Рейтинг: 4
|
|||
Здравствуйте!
Я только начинаю пользоваться Hiasm'ом. Но у меня также возникла проблема с кодировками. В частности необходимо редактировать текстовые файлы с кириллическим текстом в кодировке UTF-8 и соответственно сохранять в этом формате. Можно конечно это делать и сторонними программами, например AkelPad, Notepad++ и др., но очень интересно сделать свою программу, заодно и поучиться работать в Hiasm'е. Я взяла пример из состава Hiasm под названием "Notepad", добавила в неё компонент Charset (UTF8_ANSI), который работает при открытии файла, и аналогично, при сохранении файла, только в обратную сторону ((ANSI_UTF8). Проверила - все отлично работает. Но это на русской ОС Windows SP3 (лицензия, стоит на ноутбуке). А вот на другом компьютере, там у меня стоит немецкая ОС Windows 7 (лицензия), вместо русских букв одни знаки вопросов. Затем, если создать новый документ, написать текст по русски и сохранить, то при открытии этого файла, например, тем же AkelPad, документ будет в формате UTF-8, но вместо русских букв отображаются иероглифы. Сразу скажу, что текстовые файлы с русским текстом в формате UTF-8 на немецкой ОС текстовыми редакторами AkelPad, Notepad++ открываются правильно, русский текст отображается, а вот моей программе знаки вопросов. В связи с этим у меня возникают вопросы: 1) Почему они верно открывают файлы, а моя программа не правильно? 2) Можно ли реализовать подобный механизм в программе, созданной с помощью Hiasm? Я начала искать ответ на вашем форуме. Нашла много разных примеров, но конкретной реализации нет (если они есть, то ткните носом, я не обидчивая). В основном все вопросы были связаны с правильным отображением букв русского алфавита на русских (пиратских) ОС Windows, с правкой реестра, подменой локали и т.д. А как быть на системах с другим системным языком? Причем, я против каких либо кардинальных правок в системе. Как я поняла, вместо русской кодовой страницы 1251 берется 1252 и из-за этого получается ошибка на этапе преобразования из UTF-8 в ANSI (и наоборот, при сохранении). Но почему такая ошибка не происходит при открытии файла в том же AkelPad или Notepad++? Кто-то здесь давал совет, что необходимо задать жесткую привязку по кодовым страницам. Решила попробовать. Указала для преобразования UTF8 - 65001, а для ANSI - 1251. Скомпилировала проект, перенесла программку на немецкую ОС и запустила. Открыла документ и... вместо русских букв уже не знаки вопросов, а какие-то кракозяблики. Прогресс на лицо. На Википедии (здесь у вас тоже ссылку давали) установила, что мои иероглифы соответствуют отображению кодовой страницы 1251 символами страницы 1252. Делаю вывод, преобразование UTF8_ANSI моя программа сделала правильно, но для отображения текста была взята кодовая страница 1252 используемая в системе по умолчанию. В своем проекте, в компоненте Memo, в свойствах шрифта указала "Кириллический" набор символов. Снова скомпилировала программку и запустила на немецкой оси. О чудо, теперь русский шрифт отображается верно. Делаю небольшие заметки на русском и сохраняю документ. Для проверки правильности формата открываю его AkelPad'ом. Все верно, русские буквы на месте и формат UTF-8. Моя первая маленькая победа. Но... Если мое творение, запустит у себя на компьютере, например, француз или испанец, с соответствующей их языку локалью ОС Windows, то открыв свой документ, они увидят иероглифы или знаки вопросов. Потому что, в программе жестко указаны кодовые страницы и набор символов. Как быть? Подскажите, пожалуйста, как можно избежать указания конкретной кодовой страницы, а использовать просто метод UTF8_ANSI (ANSI_UTF8)? Ведь программы AkelPad или Notepad++ это как-то делают. Пока вам писала, вдруг осенило, что набор символов шрифта в моей программке можно изменять с помощью компонента "Font", сделав соответствующую кнопочку в меню. Тогда пользователь сам сможет выбрать и настроить шрифт . А вот как быть с правильным определением кодовой страницы? Вот ваша программка немного мной переделанная. code_22216.txt С уважением, Horna. |
|||
карма: 0 |
| ||
файлы: 1 | code_22216.txt [6.1KB] [187] | ||
Голосовали: | Netspirit, foksov, Ivann, petrocan |
Ответов: 8930
Рейтинг: 823
|
|||
Специалисты, вы что, спите?! [flood]Первый раз вижу от новичка полностью и грамотно поставленный вопрос знал бы, где искать ответ - в лепёшку расшибся, но нашёл, тем более для дамы [/flood]
|
|||
карма: 19 |
|