Хочу перекомпилировать IBX в Delphi 2009, но не знаю, как это правильно сделать. Дмитрий Кузьменко из IBase в статье на своём сайте рекомендовал следующую правку в модуль IBSQL.pas:
function TIBXSQLVAR.GetCharsetSize: Integer;
begin
case SQLVar.SQLSubtype and $FF of // здесь and $FF убирает id collate, возвращаемый Firebird
0, 1, 2, 10, 11, 12, 13, 14, 19, 21, 22, 39,
45, 46, 47, 50, 51, 52, 53, 54, 55, 58 : Result := 1;
5, 6, 8, 44, 56, 57, 64 : Result := 2;
3 : Result := 3;
4, 59 : Result := 4; // здесь правильно обрабатывается id UTF8 в Firebird
else
Result := 0;
end;
end;
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
14-06-2009 10:33 | Сообщение от автора вопроса
Испробовал решение более подробно. Итак, последовательность перекомпиляции ibsql.pas такова (при выборе каталога установки по умолчанию):
а) Правим файл ibsql.pas (расположение по умолчанию - в каталоге c:\Program Files\CodeGear\RAD Studio\6.0\source\Win32\IBX). Текст правки - в топике вопроса.
б) Удаляем файлы ibsql.dcu из следующих каталогов:
c:\Program Files\CodeGear\RAD Studio\6.0\lib
c:\Program Files\CodeGear\RAD Studio\6.0\debug
в) Создаём тестовый проект с компонентами IBDatabase, IBTransaction и IBSQL.
г) При попытке компиляции вывалится ошибка - Can't find IBSQL.dcu
д) Открываем Project Manager, жмём Add to project и вносим исправленный ibsql.pas.
е) Компилируем проект. Если он рабочий - можно даже попробовать запустить.
ж) Ищем файл IBSQL.dcu (у меня он сформировался в том же каталоге, в котором находится IBSQL.pas) и раскидываем его по каталогам, из которых мы потёрли старый IBSQL.dcu.
Насколько я понимаю, если Вы не используете Run-time packages,
то для runtime правки IBSQL.pas будет достаточно.
Я попробовал - у меня ничего не вышло. Но мне только сейчас подсказали вариант, при котором следует:
а) подправить pas-файл;
б) потереть из системы все копии ibsql.dcu, предварительно запомнив их местоположение;
в) создать новый пробный проект со связкой IBDatabase-IBTransaction-IBSQL, откомпилировать его;
г) найти, куда компилятор поместил переделанный ibsql.dcu;
д) раскидать его по местам, где прятался старый ibsql.dcu.
Не знаю, стоит ли мне это пробовать. Тот же источник сказал мне, что работать с Firebird через IBX2009 в сети невозможно - скорость работы клиента очень низка. Мне посоветовали приобрести FIBPlus, которые великолепно справляются с этой задачей. Сейчас я уже оформляю заказ и после своих испытаний собираюсь делать на D2009 свои проекты с этим набором компонентов.
То Сергей Любезный
Насколько я понимаю, если Вы не используете Run-time packages,
то для runtime правки IBSQL.pas будет достаточно. Что касается dpk, то их действительно нет. Можно попробовать собрать пакет самостоятельно - для D6 есть IBX 6.084 от О.Пащенко, попробуйте по аналогии.
Какие именно? В каком каталоге размещены dpk? Я их не нашёл - есть одни bpl-ки. Может быть с ними можно что-то сделать? Или лучше попробовать создать отдельный пакет?
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.