Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ошибка при включении Юнита в пакет


Автор: Artemon 26.7.2006, 15:02
Я создал 2 компонента и они используют один и тоже вспомогательный класс.

Когда я компилирую первый пакет все проходит как по маслу.
Когда я компилирую второй пакет - выдается ошибка 
"cannot load package 'PClientDataTransfer'. It contains unit 'UnetThread', which also contained in package 'PServerDataTransfer' "

Что делать? 

Автор: Romikgy 26.7.2006, 15:10
ошибка в 17 строке (с) 

Автор: Artemon 26.7.2006, 16:56
А код-то сдесь причем?
Ведь ошибка идеологическая.
Билдер говорит, что не могу спользовать класс повторно.

И шибка выдается как отдельное окно. 

Автор: Romikgy 26.7.2006, 17:05
Цитата(Artemon @  26.7.2006,  15:56 Найти цитируемый пост)
Ведь ошибка идеологическая.

компонент ты тоже идеологически писал?
имхо где то есть повторное возюзывание чего то , а вот чего смотри сам код у тя
PS это программный глюк 

Автор: Artemon 26.7.2006, 17:09
Код

#ifndef UNetThreadH
#define UNetThreadH
//---------------------------------------------------------------------------
#include <Classes.hpp>

  #include <stdio.h>
  #include "..\COMMON_SOURCE\CONST.h"    #include "..\COMMON_SOURCE\FUNCTIONS.h"  #include "..\COMMON_SOURCE\MY_ERRORS.h"  #include "..\COMMON_SOURCE\ENUMS.h"        #include "..\COMMON_SOURCE\MySocket.h"
//---------------------------------------------------------------------------
  class NetThread : public TThread
{
private:
....................


В каждом include стоит проверка на "уже включение" 

Автор: Artemon 26.7.2006, 19:38
Создаю копию ЮНИТА, изменяю имя файла и все начинает работать.

Вчем дело, что такое?

Ведь это маразм хранить в разных файлах один и тот же код. 

Автор: Romikgy 26.7.2006, 20:20
не понял последнего поста? 

Автор: Artemon 26.7.2006, 20:38
Есть два компонента, которые используют один и тот же класс, который находится в одном ЮНИТЕ.

Оба компонента компилируются без ошибок, но вот когда Я пытаюсь установить эти компоненты Builder пишет мне о том, что данный юнит нельзя использовать, т.к. он уже используется в другом компоненте.

Что я делаю:
 Чоздаю копию файла в которм хранится к ласс и называю его другим  именем и подключаю в один из компонентов и оба компонента нормально устанавливаются. 

Автор: Romikgy 26.7.2006, 21:42
Цитата(Artemon @  26.7.2006,  19:38 Найти цитируемый пост)
ЮНИТЕ

что есть это ?
если это класс такой, в срр файле, то надо только хедеры его включать в оба компонента, 
....
как я сразу и говорил без кусков кода ходим вокруг да около 

Автор: Artemon 27.7.2006, 12:40
ЮНИТ - это связка двух файлов CPP + H (File->New->Other->Unit)

Что никто никогда не использовал один и тотже ЮНИТ в разных компоненьтах.

Ведь реально не работает.

Добавлено @ 12:45 
А на счет кусков кода - так не в этом дело.
Просто попробуй создай два компонента с использованием одного юнита, попробуй установи их - и увидишь в чем дело.

P.S.
     Юниты могут быть просто пустыми  

Автор: Vyacheslav 27.7.2006, 17:51
А зачем одно и тоже держать в двух package?
Не проще отганизовать дело так, что бы один package использовал другой. Или вообще объединить все в одном package.
А вообще довольно странная ситуация. Причем тут имя файла. Или Вы Ваш Unit как отдельный Package предварительно организовали 

Автор: vvpC 27.7.2006, 18:54
Цитата(Romikgy @  26.7.2006,  21:42 Найти цитируемый пост)
Цитата(Artemon @  26.7.2006,  19:38 Найти цитируемый пост)
ЮНИТЕ
что есть это ?

это есть делпхи, который бросить никак не получается smile . 
А если в проекте динамические библы не используются, а все в одном екзешнике - просто надо этот проект настроить правильно.. эхх. файлы сырцов к проекту подключать не умеем, а туда же. Кнопку F1 никто не отменял и там, грамотно все написано. 

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