Unicode in Delphi 2009

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Korvin
Сообщения: 3
Зарегистрирован: 15 окт 2008, 15:53

Unicode in Delphi 2009

Сообщение Korvin » 15 янв 2009, 09:14

Доброго времени суток всем!
Помогите разобраться:
решил переехать на Delphi 2009, где рулит Unicode;
база в кодировке win1251;
сервер FireBird 2.0

В общем проблема в том, что TIBEvents не ловит события, посылаемые из базы данных.
Это кривость компонента TIBEvents? Или же проблема в кодировках.
Пробовал базу модифицировать в Unicode, но и тогда события не отлавливаются компонентом.
УТОЧНЯЮ!

В триггере на вставку записи в таблицу отправляю событие

Код: Выделить всё

POST_EVENT 'some_event';
В программе:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
  IBEvents1.Events.Add('some_event');
  IBEvents1.RegisterEvents;

  IBTransaction1.StartTransaction;
  { некоторые действия по добавлению записи
    в таблицу на которой висит триггер

    добавление записи в таблицу выполняется
    посредством хранимой процедуры }
  IBTransaction1.Commit;
end;

procedure TForm1.IBEvents1EventAlert(Sender: TObject; EventName: string;
  EventCount: Integer; var CancelAlerts: Boolean);
begin
  Caption := EventName;
  // здесь в заголовке формы должно появиться
  // имя произошедшего события
  // НИЧЕГО не происходит!!!
end;
Последний раз редактировалось Korvin 15 янв 2009, 11:37, всего редактировалось 1 раз.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: Unicode in Delphi 2009

Сообщение WildSery » 15 янв 2009, 11:10

[вырезано самоцензурой]
Последний раз редактировалось WildSery 15 янв 2009, 15:51, всего редактировалось 1 раз.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Unicode in Delphi 2009

Сообщение kdv » 15 янв 2009, 15:11

события приходят по коммиту той транзакции, где они были инициированы. в Д2009 проверить пока не могу, еще не поставил.
Но в примерах есть IBXEvents, попробуй его. Может ты что не так сделал.

Korvin
Сообщения: 3
Зарегистрирован: 15 окт 2008, 15:53

Re: Unicode in Delphi 2009

Сообщение Korvin » 16 янв 2009, 08:54

В общем история такая:
1) Пример из комплекта поставки проверить не могу. Не поддерживается ODS11.2.
2) Код примера понятный. На основе его и писал в тестовом приложении. Причем в этом тестовом приложении транзакция всего одна и в ней все делается.
3) Получилось отловить событие при соблюдении следующих условий:
- база данных создана в кодировке FSS_UNICODE
- название события состоит из одного символа
Такие события клиент отлавливает и реагирует.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Unicode in Delphi 2009

Сообщение kdv » 20 янв 2009, 17:07

Пример из комплекта поставки проверить не могу. Не поддерживается ODS11.2.
http://www.ibase.ru/devinfo/prevver.htm
это формат IB 7.5. Впрочем, база эта пустая, там только одна процедура, и больше ничего нет

Код: Выделить всё

CREATE OR ALTER PROCEDURE EVENTDEMO(
    EVENT VARCHAR(40))
AS
begin
  post_event :event;
end
- база данных создана в кодировке FSS_UNICODE
зачем этот ужас? А UTF8?
я подозреваю, что IBEventAlerter тупо не юникодный. Или что то там с IB API в этом смысле.

Korvin
Сообщения: 3
Зарегистрирован: 15 окт 2008, 15:53

Re: Unicode in Delphi 2009

Сообщение Korvin » 21 янв 2009, 05:52

to KDV
УЖАС
использовался в качестве эксперимента...
сегодня попробовал, и оказалось, что кодировка ему вообще по-боку... и клиенты принимают "односимвольные события"!!!
НО тема так и остается открытой, хотя... скачал Firebird-2.1.1.17910 сегодня поставлю и буду пробовать

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Unicode in Delphi 2009

Сообщение kdv » 21 янв 2009, 13:25

и клиенты принимают "односимвольные события"!!!
потому и подозреваю, что апи алертов где-то не переделано на юникод. Или в FB API, или в IBX.
то есть, нужно копать код.

Ответить