Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Установка RXLib


Автор: Mikel 2.11.2002, 22:45
Как установить RXLib. Он пишет, что то, что он должен установить не является библиотекой(что-то в этом роде). Пробовал на 5 версии, на 6- тоже самое. Приходилось по отдельности нужное ставить, а ставилось не все. :(

Автор: rhf 2.11.2002, 23:25
в readme есть раздел installation, там подробно, и для каждой версии, расписано в каком порядке какие runtime, а потом design time packages ставить.

Автор: Medved 3.11.2002, 03:56
1. Delphi 5.x:

Uninstall previous installed version of RX Library from Delphi 5 IDE.
Remove previously compiled RX packages (if any) RXCTL5.BPL, RXDB5.BPL,
RXBDE5.BPL, DCLRX5.BPL, DCLRXDB5.BPL and DCLRXBD5.BPL from your hard disk.

If you have Delphi 5 Professional or Standard Edition, deactivate the
conditional define {$DEFINE DCS} in the RX.INC file before compiling the
library.

Use "File\Open..." menu item of Delphi IDE to open RX' runtime
package RXCTL5.DPK. In "Package..." window click "Compile" button to
compile packages RXCTL5.DPK. After compiling repeat that for other RX
Library run-time packages RXDB5.DPK, RXBDE5.DPK. Put compiled BPL files
into directory that is accessible through the search PATH (i.e. DOS
"PATH" environment variable; for example, in the Windows\System directory).
After compiling RX run-time packages you must install RX design-time
packages into the IDE.

Use "File\Open..." menu item to open RX design-time package DCLRX5.DPK.
In "Package..." window click "Compile" button to compile the package
and then click "Install" button to register RX Library components on
the component palette. Repeat that for other RX Library design-time
packages DCLRXDB5.DPK and DCLRXBD5.DPK.

NOTE: do not save package sources in the Delphi IDE.

Автор: RA 3.11.2002, 09:36
Цитата(Mikel @ 02.11.2002, 14:45)
Как установить RXLib. Он пишет, что то, что он должен установить не является библиотекой(что-то в этом роде). Пробовал на 5 версии, на 6- тоже самое. Приходилось по отдельности нужное ставить, а ставилось не все. :(

Тут уже дали ответ, ну и в крации от меня:

RxLib очень глючная вещь, лично у меня эта библ. вылетала раз 100 как минимум, вообщем для её установки почитай ридми.txt там и на русском есть, ну а для переустановки, надо удалить все следы RX и не только из компилятора но и из HDD.

Автор: Medved 3.11.2002, 12:25
Не знаю.... уже около трех лет использую RxLib, не разу такого не было.... были проблемы но это было до того как прочитал ReadMe....

Автор: Vit 3.11.2002, 13:58
За 5 лет работы с Rx обнаружил единственный глюк с компонентом TGifAnimator - неправильно разрушается при включенном ассинхронном режиме, других глюков не наблюдалось (при чтении readme конечно)

Автор: Alex 3.11.2002, 17:18
Сам довольно долгое время испытывал проблемы установкой RxLib. Самая главная проблема это то, что в интернете лежит, как минимум пять версий RxLib 2.75 под Delphi6, возможно вы скачали какую ни будь ключную версию. Да и еще установить официальную версию библиотеки для Delphi6 взятую с сайта www.sgbsoftware.com мне не удалось.

Автор: Alex 3.11.2002, 17:24
В модуле Placement.pas из RxLib есть ошибка вызывающая в некоторых случаях "бесконечную" рекурсию при обработке события OnCloseQuery. Бесконечную в кавычках, поскольку все кончается крахом при исчерпании пространства памяти выделенного приложению под стек.

В принципе, для Delphi версии 4 и ниже все правильно. Те кто переносил RxLib на D5 и D6 не заметили что начиная с D5 некоторые изменения в Delphi повлияют на правильность работы Placement.pas. Но их можно простить - весь код не просмотришь, а проявляется эта ошибка только при использовании компонента TFormPlacement или TFormStorage либо на форме наследуемой (inherited) другой формой (доступно начиная с D5), либо на форме с динамически подгружаемым ресурс-файлом. Думаю что оба эти случая нечасто встречаются.

Могу выложить исправленный файл.

Автор: neutrino 3.11.2002, 19:05
Мokel, в диалоге с кнопками "Install", "Compile"..., нажми кнопку "Properties" или как там она (самая правая). Там поставь галочку в "Runtime and Designtime". У меня именно здесь была проблема.

Автор: Mikel 3.11.2002, 19:31
Цитата(neutrino @ 03.11.2002, 11:05)
Мikel, в диалоге с кнопками "Install", "Compile"..., нажми кнопку "Properties" или как там она (самая правая). Там поставь галочку в "Runtime and Designtime". У меня именно здесь была проблема.

Спасибо! Установил. Именно в этом и была проблема.

Автор: KAlexx 18.8.2014, 16:28

Наткнулся на Ваше сообщение:
Цитата

В модуле Placement.pas из RxLib есть ошибка вызывающая в некоторых случаях "бесконечную" рекурсию при обработке события OnCloseQuery. Бесконечную в кавычках, поскольку все кончается крахом при исчерпании пространства памяти выделенного приложению под стек.

В принципе, для Delphi версии 4 и ниже все правильно. Те кто переносил RxLib на D5 и D6 не заметили что начиная с D5 некоторые изменения в Delphi повлияют на правильность работы Placement.pas. Но их можно простить - весь код не просмотришь, а проявляется эта ошибка только при использовании компонента TFormPlacement или TFormStorage либо на форме наследуемой (inherited) другой формой (доступно начиная с D5), либо на форме с динамически подгружаемым ресурс-файлом. Думаю что оба эти случая нечасто встречаются.


У меня как раз такой случай.
Как Вы решили эту проблему?

Автор: superVad 18.8.2014, 18:23
KAlexx, попробуй перейти на jvcl.

Автор: KAlexx 19.8.2014, 16:46
В RX циклится здесь:
Код

procedure TFormPlacement.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Assigned(FSaveFormCloseQuery) then FSaveFormCloseQuery(Sender, CanClose);
  if CanClose and Active and (Owner is TCustomForm) and (Form.Handle <> 0) then
    try
      SaveFormPlacement;
    except
      Application.HandleException(Self);
    end;
end;

procedure TFormPlacement.FormDestroy(Sender: TObject);
begin
  if Active and not FSaved then begin
    FDestroying := True;
    try
      SaveFormPlacement;
    except
      Application.HandleException(Self);
    end;
    FDestroying := False;
  end;
  if Assigned(FSaveFormDestroy) then FSaveFormDestroy(Sender);
end;


В JVCL тоже самое.
Код

procedure TJvFormPlacement.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Assigned(FSaveFormCloseQuery) then FSaveFormCloseQuery(Sender, CanClose);
  if CanClose and IsActive and (Owner is TCustomForm) and (Form.Handle <> NullHandle) then
  try
    SaveFormPlacement;
  except
    Application.HandleException(Self);
  end;
end;

procedure TJvFormPlacement.FormDestroy(Sender: TObject);
begin
  if IsActive and not FSaved then
  begin
    FDestroying := True;
    try
      SaveFormPlacement;
    except
      Application.HandleException(Self);
    end;
    FDestroying := False;
  end;
  if Assigned(FSaveFormDestroy) then FSaveFormDestroy(Sender);
end;


Найдите отличия.
В JVCL этот модуль тупо слизан из RX.

Автор: northener 20.8.2014, 01:45
Цитата(KAlexx @  19.8.2014,  16:46 Найти цитируемый пост)
В JVCL тоже самое.

Это означает только то, что во-первых авторы RxLib "недлолизали" свой модуль Placement, а во-вторых те "джедаи" которые сейчас в свободное время занимаются проектом JVCL не считают этот модуль актуальным.
Я тоже в своё время пробовал использовать этот модуль (конкретно класс TFormStorage) получил глюки и отказался от его использования. Сохранял нужные мне свойства самостоятельно и тогда, когда считал правильным. А не только при закрытии программы.

Resume
У вас, уважаемый KAlexx есть как минимум два варианта решения. Либо вы подключитесь к сообществу разработчиков JVCL и попробуете с помощью отладчика найти причину этой проблемы, либо вы отказываетесь от лёгкого сыра в мышеловке и решаете свои задачи сами в своём коде.

Автор: KAlexx 20.8.2014, 11:54
Цитата

вы отказываетесь от лёгкого сыра в мышеловке и решаете свои задачи сами в своём коде.


Придется. Да уж больно проект большой.

Автор: northener 21.8.2014, 01:34
Цитата(KAlexx @  20.8.2014,  11:54 Найти цитируемый пост)
Придется. Да уж больно проект большой. 

А причём тут размер проекта? Если вас  интересует только компонент TFormPlacement, то даже в большом проекте работы на пять-десять минут включая перекур, имхо smile

Автор: KAlexx 21.8.2014, 16:38
Если править TFormPlacement, то да, может быть. Только я не знаю как править.

Автор: northener 22.8.2014, 01:36
Цитата(KAlexx @  21.8.2014,  16:38 Найти цитируемый пост)
Если править TFormPlacement, то да, может быть. Только я не знаю как править. 

Я не призывал вас править TFormPlacement.
Если сравнить, то использование TFormPlacement и прописывание нужного кода в проекте, практически не отличаются по размеру кода (количеству клавише/мышко нажатий).

Автор: neutrino 25.8.2014, 00:10
[offtop]
Прочитал этот тред, какой-же ревайвал. Сколько воды утекло. Вит еще был с нами, я еще работал в Дельфи...
Как все меняется. С одной стороны, так жаль и хочется все вернуть. С другой осознаешь свою беспомощность в этом желании.
Того времени больше никогда не будет. 

Или на меня просто напала ностальгия после бутылки Финляндии...
[/offtop]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)