Есть небольшая шабашка для знатоков Lazarus

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

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение NTFS » 18.08.2010 23:12:20

Это не выход. Мне еще с базами работать.

Только что пробовал, от безысходности, сделать простейшую задачу - открыть WIN1251 базу FireBird 1.5.6 в Lazarus 0.9.28. И FIBL, и SQLDB оригинальные. Пофиг! Вместо русских букв - вопросы. Кодировку указывал как положено

Придется работать с 0.9.24 - там нет этих проблем.
Только не говорите, что я должен преобразовывать кодировки у всех баз всех моих клиентов. Обычно приложение подстраивается под сервер - а не наоборот.

В общем, я в печали. Хороший был проект Lazarus, реальная замена Дельфи для малых и средних задач - а из-за странной тяги разработчиков к переносимости (под Linux и MacOS как раз таки огромное количество родных сред разработки, подобие Дельфи там без надобности) превратился в ужас под названием "найди еще десять мест, где ты забыл сменить кодировку".

К слову - это не ИМХО, а мнение профессионала, который на программировании деньги зарабатывает.
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение скалогрыз » 18.08.2010 23:16:47

задача элементарная - решается в 3 хода:
1) определить кодировку базы данных (или firebird это не позволяет)
2) преобразовывать данные из кодировки базы в utf8 (при чтении из базы)
3) преобразовывать данные из utf8 в кодировки базы (при записи в базу)

код пишется один раз! потом забывается навсегда, т.к. работает автоматически.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение NTFS » 18.08.2010 23:32:26

У меня в среднем проекте 50-60 таблиц, в каждой - 5-10 полей.
Мне нужно 600 раз указывать код перекодировки? А для визуальных компонент? А DBGrid'ы?

Давай просто признаем - есть разработчики, которым UTF8 нужен, а есть те, которым он как велосипеду - фотонный отражатель. Вторых - БОЛЬШИНСТВО. И вот это уже ИМХО.
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение .wOvAN » 18.08.2010 23:45:41

при работе с Zeos достаточно один раз передать в коннектион

Properties.Strings.Add( 'codepage=utf8');

и проблема практически отпадает.
.wOvAN
постоялец
 
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение VirtUX » 19.08.2010 00:10:51

NTFS писал(а):мнение профессионала, который на программировании деньги зарабатывает

Думаю здесь таких "вагон и тележка". Я тоже в этой тележке.
NTFS писал(а):сделать простейшую задачу - открыть WIN1251 базу FireBird 1.5.6

У меня сервер ваще работает с OEM-866 кодировкой :) Но как-то проблем нет - перекодирую его данные, при получении, для клиентского ПО в UTF-8, а данные для него, при отсылке, в OEM-866 соответственно. БД на сервере подбирается к Гигу, но это пифиг, т.к. расчеты на сервере, а на клиентском ПО только-лишь отображение.
П.С. Вспомнил. На втором серваке CP-1251, но он сам перекодирует для клиентов в UTF-8.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение скалогрыз » 19.08.2010 08:25:44

NTFS писал(а):У меня в среднем проекте 50-60 таблиц, в каждой - 5-10 полей.
Мне нужно 600 раз указывать код перекодировки? А для визуальных компонент? А DBGrid'ы?

очевидно же, что нужно меня код только в 2х местах - запись и чтение.

все профессионалы так делают! ;) добиваясь максимального результата с минимальными изменениями!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение stikriz » 19.08.2010 10:32:52

Кодировку надо указывать не ту, которая в базе, а ту, которая Вам нужна на клиенте. Ничего дописывать не нужно. т.к. на клиенте у Вас utf-8, то именно её и нужно указывать. А какая кодировка в базе сервер и без Вас знает. И он сам перекодирует как надо при фече и посте.
Т.е. решеие такое - в параметрах конекта указать utf-8. Все.
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение VirtUX » 19.08.2010 11:04:56

Не пытайся согнуть ложку - это не возможно. Главное - понять, что ложки не существует.

Перефраз:
Не пытайся решить проблему, если ее нет - это не воможно.

Очевидно, что проблема не в Лазаре, а в подходе организации мыслей. Ведь завтра может понадобиться работать с БД в ISO-***** или другой какой CP-****. И что же - переписывать Лазарь под эту кодировку, чтоб он не превратился в "Хороший был проект Lazarus"?
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение Vadim » 19.08.2010 12:58:48

Не спорьте друзья мои. FireBird до версии 2.0 перекодировкой сам не занимался. Проблемы у товарища в том, что он не может перейти на современную версию FireBird'а. Виноват оказался Lazarus... :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение stikriz » 19.08.2010 13:59:32

InterBase 5 уже этим занимался. Это заложено в архитектуру сервера с самого рождения.
Собственно, этт параметр для именно этого и был придуман.
Просто, когда-то давно на Дельфи не было утф-8, и указывали win1251 - ту мамую кодировку с которой работала Дельфи.
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение Brainenjii » 19.08.2010 16:33:04

Firebird и на 1.5 уже конвертировала свободно, за исключением blob полей.
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Есть небольшая шабашка для знатоков Lazarus

Сообщение Vadim » 19.08.2010 17:23:52

Так может ему BLOB и требуется?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Пред.

Вернуться в Помощь за вознаграждение

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

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

Рейтинг@Mail.ru