Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FireBird и Delphi 2009 
:(
    Опции темы
alisa7
Дата 25.2.2010, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



Доброе время суток!
Работаю в Delphi 2009, сервер БД - Firebird 2.1.
C сервера передаю сообщения, используя post_event.
Для получения на клиенте использую IBEvents.
Сообщения получаются только те, имя которых состоит из 1 символа.
Причем если сообщение начинается с этого символа, то оно тоже выдается.
В Delphi 7 таких проблем не было.
Может кто-то сталкивался, помогите плз!
PM MAIL   Вверх
Akella
Дата 25.2.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Не знаю, не работал с сообщениями. Но ты в курсе, что D2009 - это уже юникод? Может в этом дело? Да и компоненты IBX в D2009 глючат.
PM MAIL   Вверх
Alexeis
Дата 25.2.2010, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



Цитата(alisa7 @  25.2.2010,  08:42 Найти цитируемый пост)
Сообщения получаются только те, имя которых состоит из 1 символа.

Если есть такая строка из латинских символов "vasea", то в юникоде она представляет собой "v"#0"a"#0"s"#0"e"#0"a"#0 . Т.о. строка из одного юникодного символа совпадает с анси строкой, если символов больше одного, то уже совпадения нет. Однако все зависит от методики сравнения. Если содержимое строки соответствует типу строки, то делфи может осуществляет правильное преобразование сам.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Frees
Дата 25.2.2010, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Alexeis, и возможно ли  научить FB посылать сообщения в utf?

зы
с ужасом жду дня когда прейдется переходить на уникодную делфи


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Akella
Дата 25.2.2010, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



сразу советую использовать фибы, а то заманаешься переконвертировать из юникода в юникод
PM MAIL   Вверх
Alexeis
Дата 25.2.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



Цитата(Frees @  25.2.2010,  20:06 Найти цитируемый пост)
Alexeis, и возможно ли  научить FB посылать сообщения в utf?

  Да какая разница в чем оно приходит? Посмотрите внимательно что приходит и сконвертируйте в то чего нужно для сравнения smile .


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Frees
Дата 25.2.2010, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Alexeis @  26.2.2010,  00:37 Найти цитируемый пост)
Да какая разница в чем оно приходит? 

проблему на стороне делфи можно решить.. это понятно..

можно ли решить все проблемы на стороне сервера.


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
alisa7
Дата 26.2.2010, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



Цитата(Akella @ 25.2.2010,  17:54)
Но ты в курсе, что D2009 - это уже юникод? Может в этом дело? Да и компоненты IBX в D2009 глючат.

Да, то что D2009 - это юникод, я знаю и что IBX компоненты глючат - тоже догадалась. Поставила вчера FIBPlus, работает хорошо все, только вот не знаю будут ли проблемы с тем что это демо версия....

Добавлено через 3 минуты и 32 секунды
Цитата(Alexeis @ 25.2.2010,  18:05)
Если есть такая строка из латинских символов "vasea", то в юникоде она представляет собой "v"#0"a"#0"s"#0"e"#0"a"#0 . Т.о. строка из одного юникодного символа совпадает с анси строкой, если символов больше одного, то уже совпадения нет. Однако все зависит от методики сравнения. Если содержимое строки соответствует типу строки, то делфи может осуществляет правильное преобразование сам.

Если честно, то так и не поняла какую же методику сравнения выбрать, чтобы преобразовать правильно! Понимаю только что там ansistring, а там unicodestring, но вот как с ними работать - не разобралась...
PM MAIL   Вверх
Alexeis
Дата 26.2.2010, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



Цитата(alisa7 @  26.2.2010,  08:13 Найти цитируемый пост)
Понимаю только что там ansistring, а там unicodestring, но вот как с ними работать - не разобралась... 

  Проблема не контейнере для строки, а в том что IBX не всегда следит, что реально записано в контейнере. Содержимое строки может не соответствовать типу строки. Посмотрел FIBPlus там вопросы кодировок отслеживаются (не знаю насколько правильно, но по крайней мере авторы за этим следят)


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alexeis
Дата 26.2.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



А все, нашел решение. Проблема была в том, что в старый обработчик принимал параметр EventName : AnsiString , а в версии 2009/2010 он уже объявлен как EventName : UnicodeString 
Интересно, что делфи не выдал ошибку несовместимости параметров функций обработчиков. Короче решается все так, удаляются все обработчики OnEventAlert, и вместо них генерятся новый (двойной клик в object inspector) старый код переносим в новые обработчики, в результате теперь в параметр EventName уже UnicodeString и содержимое соответствует контейнеру. После этого сравнение уже работает верно. Можно сравнивать хоть с AnsiString хоть с WideString


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
alisa7
Дата 26.2.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



Цитата(Alexeis @ 26.2.2010,  11:57)
Короче решается все так, удаляются все обработчики OnEventAlert, и вместо них генерятся новый (двойной клик в object inspector) старый код переносим в новые обработчики, в результате теперь в параметр EventName уже UnicodeString и содержимое соответствует контейнеру. После этого сравнение уже работает верно. Можно сравнивать хоть с AnsiString хоть с WideString

Не поняла зачем их удалять и генерить заново - если они первоначально написаны в 2009. Все равно сравнивает неправильно.
PM MAIL   Вверх
Alexeis
Дата 26.2.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



Цитата(alisa7 @  26.2.2010,  13:24 Найти цитируемый пост)
Не поняла зачем их удалять и генерить заново - если они первоначально написаны в 2009. Все равно сравнивает неправильно. 

  Параметр обработчика EventName : AnsiString или EventName : UnicodeString ? Вариант с EventName : String таже подойдет. Не подходит только "EventName : AnsiString", поскольку юникодные компоненты туда запихнут юникод вне зависимости от того какого типа строка. 
  У меня была такая же проблема, но при переносе из 2007->2010. Но в 2007 в обработчике параметр был определен как AnsiString и соответственно код неправильно трактовал содержимое строки.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
alisa7
Дата 26.2.2010, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



У меня EventName : String, но тем не менее не подошло!
Даже не знаю где искать уже...
PM MAIL   Вверх
Alexeis
Дата 26.2.2010, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



Цитата(alisa7 @  26.2.2010,  16:30 Найти цитируемый пост)
У меня EventName : String, но тем не менее не подошло!
Даже не знаю где искать уже... 

  Покажите фрагмент обработчика OnEventAlert с комментариями. Думаю, что проблема в мелочи.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Frees
Дата 27.2.2010, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



по моему ошибка сравнения  в IBX и они вообще не вызывают OnEventAlert поэтому не важно какой код в обработчике



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.