Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
Мне нужно, чтобы к закладкам IBExpert "As Text - ANSI", "As Hex" и так далее
Картинка с другого сайта.[/img]
добавилась бы моя закладка с моим BLOB-фильтром.

Не смог нагуглить примеров, того как это делается. :(

DECLARE FILTER show_BLOB
       INPUT_TYPE  BINARY output_type TEXT
       ENTRY_POINT 'show_BLOB' MODULE_NAME 'BLOB_Filter'

function show_BLOB(action: Word; control: PISCBlobCtl): Integer; cdecl;
...
exports show_BLOB;
26 июн 19, 06:43    [21915261]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10129
Borland Delphi 1995,

когда я вас сюда направлял даже не думал что вы имеете ввиду именно это. Что-то мне подсказывает, что данные закладки с отображением BLOB не имеют никакого отношения к BLOB фильтрам
26 июн 19, 09:54    [21915354]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
А как тогда использовать BLOB-фильтры при работе с IBExpert?
Мне нужно, чтобы BLOB-фильтр преобразовал содержимое BLOB-поля, а IBExpert как нибудь показал результат.
26 июн 19, 10:49    [21915395]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10129
Borland Delphi 1995,

ну вот смотрю я на ваш пример. Вижу что у вас второй строкой в блоб засунута электронная таблица OpenOffice.
BLOB фильтры могут преобразовать один набор байтов в другой набор байтов, но с отображением они никак не помогут, для этого надо само приложение расширять. Мне интересно во что же вы в своём блоб фильтре преобразовали электронную таблицу? В текст?

Сам эксперт может быть расширен с помощью IBE block в некоторых случаях, но в данном случае я сомневаюсь что данная возможность предусмотрена. Т.е. остаётся только вариант просить Александра добавить новую закладку, которая могла бы отображать ваш блоб в нужном виде.

Borland Delphi 1995
DECLARE FILTER show_BLOB
       INPUT_TYPE  BINARY output_type TEXT
       ENTRY_POINT 'show_BLOB' MODULE_NAME 'BLOB_Filter'


я вообще сомневаюсь что объявление такого фильтра корректно. Объявление фильтра с уже существующими комбинациями входных и
выходных типов BLOB приведёт к ошибке. В Firebird фильтр который преобразует BINARY в текст TEXT уже встроен. Фильтры нужны если вы преобразуется свой собственный подтип blob с другой собственный или встроенный подтип, или наоборот встроенный подтип в собственный.
26 июн 19, 11:49    [21915442]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
автор
вот смотрю я на ваш пример. Вижу что у вас второй строкой в блоб засунута электронная таблица OpenOffice.

Это просто первый попавшийся подходящий скриншот, а таблица у меня называется по-другому, и имеет другое содержимое.

В моей таблице - тоже есть поле BLOB, которое мне нужно как-нибудь показать, через IBExpert распаковав его содержимое.
Конкретно, полученное мною ТЗ дословно звучит:
автор
Написать BLOB-фильтр, позволяющий работать со сжатыми полями в IBExpert
26 июн 19, 12:08    [21915456]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10129
Borland Delphi 1995,

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

DECLARE FILTER show_BLOB
       INPUT_TYPE  ZIP output_type TEXT
       ENTRY_POINT 'show_BLOB' MODULE_NAME 'BLOB_Filter'


Для определение мнемоники вашего подтипа как ZIP (назови как хочешь) нужно сделать

INSERT INTO RDB$TYPES (RDB$FIELD_NAME, RDB$TYPE, RDB$TYPE_NAME)
VALUES ('RDB$FIELD_SUB_TYPE', -10, 'ZIP');


-10 это как пример. Пользовательские подтипы должны быть представлены отрицательными числами (от -1 до -32768).
26 июн 19, 12:30    [21915470]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
А с IBExpert это как будет работать?
Под-тип у BLOB-поля таблицы тоже надо будет менять на ZIP? А если там уже данные лежат?
26 июн 19, 12:33    [21915473]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10129
Borland Delphi 1995,

ещё раз объясняю. BLOB фильтры предназначены для преобразование данных из одного подтипа BLOB в другой. BINARY изначально предназначено для того, чтобы отдавать блоб как он представлен в виде голых байтов. Не надо к нему фильтры писать. К BINARY можно привести BLOB любого подтипа без всяких фильтров.
26 июн 19, 12:50    [21915483]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
Если написать фильтр для INPUT_TYPE ZIP, то содержимое обработанное фильтром IBExepert сам автоматически покажет в закладке "As Text", или как?

И есть ли простой способ изменить подтип BLOB у поля содержащего данные?
26 июн 19, 12:57    [21915490]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
- создал BLOB_Filter.dll
- закинул эту dll в папку UDF в FireBird
- добавил тип и фильтр
- создал копию поля с новым типом
Но при запуске IBExpert и попытке посмотреть это поле "As Text" - BLOB_Filter.dll не вызывается. :(
(поставил в Delphi точку останова в функции show_BLOB, но до точки останова исполнение не доходит)

Что я делаю не так?
26 июн 19, 15:16    [21915629]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
hvlad
Member

Откуда:
Сообщений: 10654
Borland Delphi 1995,

блоб фильтры работают в сервере, а не в IBE.

Приложение может попросить сервер применить блоб фильтр при чтении\записи блоба.
Умеет ли это делать IBE - не знаю.

isql умеет просить применить блоб фильтр, преобразующий исходный блоб в текст.
Есс-но, такой фильтр должен существовать и быть известным серверу.
26 июн 19, 18:39    [21915764]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2794
Эксперт не умеет применять блоб-фильтры по желанию пользователя.
27 июн 19, 06:57    [21915901]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
А как вообще убедится, что dll с фильтром работает? (вне зависимости от IBExpert)
27 июн 19, 07:45    [21915908]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2794
Borland Delphi 1995
А как вообще убедится, что dll с фильтром работает? (вне зависимости от IBExpert)


Ну вон выше Влад пишет, что ISQL умеет применять пользовательский фильтр. Очевидно, надо попробовать выборку в ISQL.
27 июн 19, 10:42    [21915988]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
Как dll с фильтром в Delphi отлаживать?
При попытке указать firebird.exe в качестве host-application, получаю "Unable to create process: Такой запрос не поддерживается".
А если указать IBExpert, то запускается, но судя по всему dll при просмотре BLOB не вызывается.
27 июн 19, 10:43    [21915990]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
[quot IBExpert]
Borland Delphi 1995
выше Влад пишет, что ISQL умеет применять пользовательский фильтр. Очевидно, надо попробовать выборку в ISQL.

Мне начальник поставивший ТЗ сказал буквально следующее "подключи фильтр к FireBird, и он сам автоматический будет подменять содержимое поля BLOB при просмотре его в IBEXpert".
27 июн 19, 10:50    [21915997]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30624

27.06.2019 10:43, Borland Delphi 1995 пишет:
> Как dll с фильтром в Delphi отлаживать?

смотри в самый-самый конец статьи http://www.ibase.ru/udf_ok/
- "Примечание kdv по отладке UDF в Delphi"

Posted via ActualForum NNTP Server 1.5

27 июн 19, 10:55    [21916002]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
Мимопроходящий
27.06.2019 10:43, Borland Delphi 1995 пишет:
> Как dll с фильтром в Delphi отлаживать?

смотри в самый-самый конец статьи http://www.ibase.ru/udf_ok/
- "Примечание kdv по отладке UDF в Delphi"

Там написано указать на fbserver.exe , но его у меня нету, указываю на firebird.exe - получаю упомянутую ошибку.
Хотя сервис FireBird я уже остановил.
27 июн 19, 11:08    [21916009]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10129
Borland Delphi 1995,

а опции запуска как приложения ты ему указал?
27 июн 19, 11:21    [21916017]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
Как там и написано указал "-a" в качестве параметра.
27 июн 19, 11:23    [21916019]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30624

27.06.2019 11:08, Borland Delphi 1995 пишет:
> Хотя сервис FireBird я уже остановил.

убедись что это SS, и что стартует как приложение, а не сервис.

Posted via ActualForum NNTP Server 1.5

27 июн 19, 11:34    [21916030]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
А как убедиться?
Службу я остановил, в описании firebird.exe написано "Firebird SQL Server", версия FireBird у меня третья.
27 июн 19, 11:36    [21916035]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
hvlad
Member

Откуда:
Сообщений: 10654
Borland Delphi 1995
При попытке указать firebird.exe в качестве host-application, получаю "Unable to create process: Такой запрос не поддерживается".
firebird небось x64, а delphi - x32 ?

PS и не забудь ему передать пар-р -a, иначе он сразу остановится.
PPS возможно, будет легче приаттачиться к запущенному как приложение firebird -a
PPPS не оффтоп ли это всё в здесь ?
27 июн 19, 12:45    [21916117]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2794
Borland Delphi 1995
Мне начальник поставивший ТЗ сказал буквально следующее "подключи фильтр к FireBird, и он сам автоматический будет подменять содержимое поля BLOB при просмотре его в IBEXpert".


Это он тебе ерунду сказал, ничего автоматически подменяться не будет.
Как работают блоб-фильтры можно посмотреть на выборке из RDB$PROCEDURES, например. Поле RDB$PROCEDURE_BLR имеет подтип, для которого в сервере есть встроенный блоб-фильтр. Для этого подтипа редактор блобов покажет дополнительную закладку AsBLR. И вот в ней можно увидеть результат работы блоб-фильтра.
27 июн 19, 15:35    [21916331]     Ответить | Цитировать Сообщить модератору
 Re: Как подключить свой BLOB-фильтр к IBExpert?  [new]
Borland Delphi 1995
Member

Откуда:
Сообщений: 15
Возможно, я не так его понял, что он хотел бы получить.
28 июн 19, 07:59    [21916714]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / IBExpert Ответить