Перевод проекта на utf8

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Перевод проекта на utf8

Сообщение tria » 17.10.2013 11:34:23

Есть большой проект на Лазаре 0.9.24 (cp1251)
Хочу перевести на 1.0.12 (utf8)
В качестве БД используется Firebird (база в кодировке 1251), компоненты доступа - Fibl. Базу надо перевести в utf8, причем сделать это необходимо програмным путем и разослать клиентам программу-перекодировщик.

Просьба. Покидайте в меня ссылками по этому поводу...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Перевод проекта на utf8

Сообщение vada » 17.10.2013 12:57:44

А что, Firebird этого сам не умеет? СУБД 21 века :shock:
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Перевод проекта на utf8

Сообщение tria » 17.10.2013 13:16:35

Из того, что я нашел, Firebird умеет:
- Если поставить в подключении кодировку utf8, то перекодировка происходит на лету. Но как бы неправильно держать БД в одной кодировке, а клиента - в другой.
- Можно выгрузить в transportable, чей-то подшаманить, создать новую БД и загрузить. Для моих клиентов это сферхзадача.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Перевод проекта на utf8

Сообщение vada » 17.10.2013 14:38:36

разослать клиентам программу-перекодировщик.

Так напиши. Вся программа в ~100 строк уложится.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Перевод проекта на utf8

Сообщение tria » 17.10.2013 15:07:56

Проблемы не только в переводе базы в utf8.
Проблемы еще и в коде Lazarus.
Часть логики на char в 1251 (кто ж думал об utf8 10 лет назад), куча настроек в БД в строках в своем формате, уникальных (сделанных) пользователем или для него, которые после тупого конвертирования в utf8 перестанут работать.
Куча кода по обработке строк, где надо или логику менять, или всякие utf8Copy() вставлять, куча кода по вводу-выводу и прочему общению с миром...

Сейчас вот Fibl почему-то вылетает по ошибке, хотя тот же кусок кода во вновь созданном проекте работает нормально...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Перевод проекта на utf8

Сообщение Ism » 17.10.2013 15:10:14

Зачем ? Откройте старый проект в новом Lazarus и переставьте модули на UTF8 , затем текст программы переведите в UTF8 , должно сработать, будут мелкие проблемы с обработкой строк. Например Length будет выдавать неправильную длину строки для кириллицы. Поэтому лучше использовать только UTF8 библиотеку. UTF8Length модуль LclProc
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Перевод проекта на utf8

Сообщение tria » 17.10.2013 15:30:58

А как бы "переставьте модули на UTF8" сделать для всех модулей сразу? Их штук 50...
Можно и что-то пропустить.
И кстати, что это дает? Это же не перекодировка...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Перевод проекта на utf8

Сообщение Ism » 17.10.2013 16:04:55

tria писал(а):А как бы "переставьте модули на UTF8" сделать для всех модулей сразу? Их штук 50...
Можно и что-то пропустить.
И кстати, что это дает? Это же не перекодировка...

Это говорит Лазарусу как работать с модулем , иначе все функции будут неправильно работать, так как не знают в какой кодировке строка.
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Перевод проекта на utf8

Сообщение tria » 17.10.2013 16:11:54

Понял.
Остался вопрос - "а откуда он знает?"
То бишь, где Лазарь хранит признак, что этот модуль в utf8?
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Перевод проекта на utf8

Сообщение ssadragon » 17.10.2013 16:27:28

tria писал(а):А как бы "переставьте модули на UTF8" сделать для всех модулей сразу? Их штук 50...

Меню "Сервис"--"Преобразовать кодировку проектов/пакетов"
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: Перевод проекта на utf8

Сообщение tria » 17.10.2013 16:29:41

ssadragon писал(а):Меню "Сервис"--"Преобразовать кодировку проектов/пакетов"


Попробовал. Почему-то подхватил далеко не все файлы проекта...
Ну, вручную я уже вроде как переколбасил. Хотя надо бы какой-то надежный инструмент, чтобы проверить правильность ручной работы...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Перевод проекта на utf8

Сообщение ssadragon » 17.10.2013 16:33:41

tria писал(а):Почему-то подхватил далеко не все файлы проекта...

Скорее всего он подхватывает те файлы проекта которые видны в Инспекторе проекта
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: Перевод проекта на utf8

Сообщение tria » 17.10.2013 16:45:32

ssadragon писал(а):Скорее всего он подхватывает те файлы проекта которые видны в Инспекторе проекта

Неа.
Я потом из инспектора вручную открывал и проверял. Не подхватил где-то 20%
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: Перевод проекта на utf8

Сообщение Tango » 24.10.2013 13:53:40

А если взять fpc 2.7.1? там вроде правильные функции UTF и Copy, Length, Pos, вроде работают правильно.
Аватара пользователя
Tango
постоялец
 
Сообщения: 162
Зарегистрирован: 31.05.2012 17:07:30

Re: Перевод проекта на utf8

Сообщение tria » 30.10.2013 20:04:14

Tango писал(а):А если взять fpc 2.7.1? там вроде правильные функции UTF и Copy, Length, Pos, вроде работают правильно.

Да это вообще не важно, мне и текущий вариант подойдет, где надо всегда можно написать UTF8Copy...

Вылезли проблемы.
1. Использую FibL. При выполнении
Код: Выделить всё
 
  q.SQL.Clear;
  q.SQL.Add('SELECT UserName, CompName FROM CurUsers');
  q.Transaction.StartTransaction;
  q.ExecQuery;

Вылетает в недрах FibL с ошибкой выхода за диапазон. Тот же код, скопированный во вновь созданный проект работает без ошибок.

2. Во вновь созданный проект в инспекторе проекта добавляю Printer4Lazarus. При закрытии проекта он вылетает с ошибкой.

Лазарь 1.0.12
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 226

Рейтинг@Mail.ru