Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2013, 12:24   #1
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию Неправильная кодировка в DBEdit (Lazarus)

Здравствуйте, сразу прошу меня извинить, если ошибся веткой форума, но более подходящего варианта не нашел. Суть проблемы. Имеется база sqlite3, которая содержит данные импортируемые из txt в кодировке ANSI. Это добро прикручено к Lazarus, который работает только с UTF, на сколько мне известно. Соответственно все русские буквы отображаются в виде ????.
Мне нужно, чтобы в DBEdit отобразилось значение нужного мне поля при выполнении sql запроса. Делаю так:
Код:
DBText1.DataField:='NAME1';
Тогда вижу ???? в DBText.
Пробую использовать AnsiToUtf вот так:
Код:
DBText1.DataField:=AnsiToUtf8('NAME1');
Результат тот же. Вопрос: как корректно отобразить данные в DBEdit? Спасибо!
Kerby666 вне форума Ответить с цитированием
Старый 05.08.2013, 20:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
который работает только с UTF, на сколько мне известно.
Не совсем. В свойствах проекта можно установить работу с Анси.
Цитата:
которая содержит данные импортируемые из txt в кодировке ANSI
А какой-то charset указан для компонентов SQLLite на твое форме?
Имею ввиду что-то типа:
Цитата:
SQLite3Connection1.CharSet:='cp1251 ';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.08.2013, 21:18   #3
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Код:
SQLite3Connection1.CharSet:='cp1251 ';
Это свойство я не заполнял, сейчас поставил через инспектор объектов cp1251 скомпилировал и ничего, знаки ????

И еще у меня импорт как-то криво работает, точнее не работает. Делаю через SQLite3.exe. Типа
Код:
sqlite3 dbase.db
.separator ;
.import file.txt table1
Пробовал на 3 строчках - работает, сейчас пробую импортировать около 12 000 записей, ругается на последнюю строку все время, типа заявлено N столбцов, а обнаружено только 3. Удаляю эту строку или несколько строк - какая становиться последней - на нее и ругается.

Последний раз редактировалось Stilet; 05.08.2013 в 21:30.
Kerby666 вне форума Ответить с цитированием
Старый 05.08.2013, 21:28   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если честно никогда не пользуюсь DB компонентами, поэтому такие проблемы обхожу по другому. Кстати cp1251 это я для примера написал. Я на самом деле не в курсе как кодовая страница называется, просто намекнул на это свойство.
Рекомендую заглянуть сюда: http://freepascal.ru/forum/viewtopic...it+ANSI#p27629
Цитата:
у меня импорт как-то криво работает
Это я врядли скажу. Не работал с Скулайтом на таком уровне.
Цитата:
заявлено N столбцов, а обнаружено только 3
Так может быть сам импортируемый файл не содержит всю информацию по каждому полю?
I'm learning to live...

Последний раз редактировалось Stilet; 05.08.2013 в 21:31.
Stilet вне форума Ответить с цитированием
Старый 05.08.2013, 21:33   #5
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Я вот думаю, на счет импорта. Логика у меня была следующая. Если количество полей должно строго соответствовать количеству полей в текстовом файле, то нельзя создавать ключевое поле со счетчиком. По крайней мере, если делать именно так (со счетчиком) и соблюдать количество полей, то при импорте возникает ошибка - поле ID_TEST (в текстовом файле) не уникально. Опыта у меня мало в работе с субд типа SQLite, поэтому не могу сразу разобраться сам.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если честно никогда не пользуюсь DB компонентами, поэтому такие проблемы обхожу по другому. Кстати cp1251 это я для примера написал. Я на самом деле не в курсе как кодовая страница называется, просто намекнул на это свойство.
Рекомендую заглянуть сюда: http://freepascal.ru/forum/viewtopic...it+ANSI#p27629

Это я врядли скажу. Не работал с Скулайтом на таком уровне.

Так может быть сам импортируемый файл не содержит всю информацию по каждому полю?
Я проверял, полную ли информацию содержит срока с ошибкой. Даже разделители пересчитывал. Все ОК. Я в тупике.

По сути дела, я бы мог использовать любую другую СУБД, если бы допер как импорт делать из txt с разделителем.

Последний раз редактировалось Stilet; 05.08.2013 в 22:25.
Kerby666 вне форума Ответить с цитированием
Старый 05.08.2013, 22:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если бы допер как импорт делать из txt с разделителем.
Ну в теории ты все верно делаешь.
Цитата:
если делать именно так (со счетчиком) и соблюдать количество полей, то при импорте возникает ошибка - поле ID_TEST (в текстовом файле) не уникально.
Это если в файле действительно данные в этом поле не уникальны.
Цитата:
я бы мог использовать любую другую СУБД, если бы допер как импорт делать из txt с разделителем.
Оставь в файле десяток строк, и проимпорти их. Если все удастся значит ты все делаешь верно, просто дальше в самом файле что-то не так.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.08.2013, 23:08   #7
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Цитата:
Оставь в файле десяток строк, и проимпорти их. Если все удастся значит ты все делаешь верно, просто дальше в самом файле что-то не так.
2935 записей импортировались без проблем
Kerby666 вне форума Ответить с цитированием
Старый 06.08.2013, 08:15   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну )
Значит в самом файле что-то не так. Портируй их по группам, если скулайт не будет таблицы заново очищать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильная дисериализация Death Watch C# (си шарп) 2 27.06.2013 19:34
Перекомпиляция программы(простой) Win Lazarus в Linux Lazarus Toxifer Фриланс 0 27.11.2012 22:46
Неправильная кодировка в теме E-Mail POPOV Общие вопросы Delphi 2 07.09.2012 21:12
Неправильная запись в бд erwerwe SQL, базы данных 1 12.04.2011 01:00
Неправильная кодировка при пост запросе RIO Работа с сетью в Delphi 1 14.11.2010 07:02