C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Установка компонентов, только не смейтесь
marconi
Отправлено: 31.03.2004, 12:19


Станционный диспетчер

Группа: Участник
Сообщений: 86



Как наиболее правильно установить новый компонент, например в нем есть файлы с расширением:dfm,bpi,dcr,dcu,hpp,obj,res
или другой:
dcu,hpp,obj,dcr
снова читал 2 раза и ничего не получается.smile.gif
olegenty
Отправлено: 31.03.2004, 12:38


Ветеран

Группа: Модератор
Сообщений: 2412



либо ты не все файлы перечислил, либо никак.

для установки уже скомпилированного пакета нужен файл с расширением *.bpl

для компиляции и установки пакета, нужен файл *.bpk, а так же
либо *.obj, *.hpp — пакет соберётся на твоей машине, но без исходников
либо *.pas — пакет откомпилируется и соберётся на твоей машине из исходников
либо *.h, *.cpp — аналогично предыдущему

ну и всевозможные комбинации тоже возможны :-))
marconi
Отправлено: 31.03.2004, 13:51


Станционный диспетчер

Группа: Участник
Сообщений: 86



Вот сейчас ещё раз просмотрел в первом:
dfm,bpi,dcr,dcu,hpp,lib,obj,res.

Во втором компоненте меньше:
dcu,hpp,obj,dcr,pas.
Но pas. как бы в виде справки. Или я ????
olegenty
Отправлено: 31.03.2004, 14:54


Ветеран

Группа: Модератор
Сообщений: 2412



первый похоже не поставишь. нет *.bpl потому что, а второй — смотря что в *.pas
если в каком-то из *.pas есть функция Register, то с этого файла нужно создать *.bpk и откомпилировать.
marconi
Отправлено: 31.03.2004, 15:19


Станционный диспетчер

Группа: Участник
Сообщений: 86



Странно. Забыли положить, но в двух не может быть наверно . Это с диска. Компонент DynamicScinForm v5.35 написано что компонент позволяющий изменить вид формы.
Ну ладно спасибо на этом.
klen
Отправлено: 01.04.2004, 00:26


Машинист паровоза

Группа: Участник
Сообщений: 239



Значить так мужики, не вешайте нос.

Возможно не все потеряно!!!!!

Для установки пакета (с компонентами и(или) редакторами компонент ) действительно нужен сам пакет, но ... что нам мешает его собрать самим.

Пакет при установке загружается как простая dll, на этом сходство кончается, далее в пакете IDE ищет функция Register которая регестрирует классы компонент и редакторов и еще некоторые служебные функции (например функции инициализации менеджера памяти, но ето так, между прочим) и вызывает их, тем самым инициализирует пакет и выставляет компоненты на палитру.

Таким образом если хоть в одном *.obj есть функция Register то пакет соберется нормальным пакетом с компонентами и при инсталяции подымет компоненты. Если такого объектника нет — извеняте бананев нема.

Такчто создвай новый пакет , смело добавляй в проект все объектники и пробуй его инсталировать, даю 90% что все получится. Навлядли забыли все положить, просто *.bpk не положили, потомучто он для всех версий билдера разный будет. Такое часто бывает.

Если так не получится, то тоже не беда, прийдется самому написать код который регестрирует классы компонент, у тебя получится чтото вроде:

(Здесь пример из моего файла)
CODE
namespace Klentoollib

#include "DataConverter.h"
#include "XMLStorage.h"
#include "XMLPropsStorage.h"
#include "StoredPropEditor.h"

{
void __fastcall PACKAGE Register()
 {
  try
   {
     TComponentClass classes[3] = { __classid(TDataConverter) ,
                                                          __classid(TXMLStorage)    ,
                                                          __classid(TXMLPropsStorage)
                                                       };
     RegisterComponents("Klen Tools", classes, 2 );

     Designintf::RegisterComponentEditor(__classid(TXMLPropsStorage), __classid(TXMLPropsStorage_ComponentEitor));

   }
  catch (...)
   {
    MessageBox(NULL,"Error for KlenToolLib pakage registration." , "Klen Tool libr?ry v0.2 pakage." , MB_OK | MB_ICONERROR);
    return ;
   }
 }
}


Где классы для регистрации определены в хидерниках которые ты тоже имеешь. Если и так не получится (может не получится только в одном случае если линкер скажет о неопределенных ссылках), то значит и обектники не все.

Вперед и спесней, забудь про слова нельзя, немогу, нехочу........smile.gif

Уважаемые коллеги, не думайте что в век когда космические корабли бораздят просторы галактик вам не понадобится напильник и паяльник.
olegenty
Отправлено: 01.04.2004, 07:07


Ветеран

Группа: Модератор
Сообщений: 2412



знал из этого только половину. спасибо за ликбез. одна только, как я понимаю, беда: *.obj должны быть откомпилированы на той же версии Builder'а?
klen
Отправлено: 01.04.2004, 08:55


Машинист паровоза

Группа: Участник
Сообщений: 239



Не обязательно, потому что обьектник это всеголишь куски исполняемого кода с таблицей символов по которой линковщик определяет где и что лежит и расчитывает реальные смешения в образе программы. Глано чтоб они компилировались компилятором одной фрми. Например у Borlanda формат OMF , а вот VC использует COFF (различие лишь в таблице символов как я понимаю, это связанно с тем что линкеры по разному работают).

Отредактировано klen — 01/04/2004, 10:01
olegenty
Отправлено: 01.04.2004, 09:01


Ветеран

Группа: Модератор
Сообщений: 2412



заимел в виду. я в такие ситуации не попадал ни разу, хотя компонентов 3-х фирм у меня стоит, как грязи...
klen
Отправлено: 01.04.2004, 11:38


Машинист паровоза

Группа: Участник
Сообщений: 239



так этож компоненты третьих фирм, а не компиляторы и линковщики третьих фирм
marconi
Отправлено: 01.04.2004, 14:17


Станционный диспетчер

Группа: Участник
Сообщений: 86



Я конечно попробую, но мне ещё рано.
Спасибо.

Вернуться в Вопросы программирования в C++Builder