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


Автор: gesper 12.9.2014, 20:56
Как сделать модуль с классом, в котором часть переменных это другие мои классы, прикрепленные через uses. Как то их описать без передачи того что идет посде implementation можно?

Автор: northener 13.9.2014, 01:38
Цитата(gesper @  12.9.2014,  20:56 Найти цитируемый пост)
Как сделать модуль с классом, в котором часть переменных это другие мои классы, прикрепленные через uses. Как то их описать без передачи того что идет посде implementation можно? 

Секций Uses может быть в каждом модуле две.  Одна в секции interface и ещё одна в секции Implemantation.
P.S. А лучше не умничать, а приводить код и сообщение об ошибке.

Автор: kami 13.9.2014, 11:45
Цитата(gesper @  12.9.2014,  20:56 Найти цитируемый пост)
Как то их описать без передачи того что идет посде implementation можно?

Можно. Если сделать "часть переменных других классов" интерфейсами.

Автор: gesper 13.9.2014, 12:48
Цитата(kami @  13.9.2014,  11:45 Найти цитируемый пост)
Можно. Если сделать "часть переменных других классов" интерфейсами. 

Т.е. технология из моих вариантов только одна - клепать интерфейсы? Надеялся, что еще есть варианты)

Цитата(northener @  13.9.2014,  01:38 Найти цитируемый пост)
Секций Uses может быть в каждом модуле две.  Одна в секции interface и ещё одна в секции Implemantation.
P.S. А лучше не умничать, а приводить код и сообщение об ошибке. 

спасибо, ошибок в коде нет. выкладывать часть кода которую пытаюсь от лишних глаз скрыть не собираюсь. 

Автор: drkot 13.9.2014, 13:10
Код

unit myclass;

interface

uses
  Controls;

type
  TMyButton = TButton;



если правильно понял, то так.
в итоге получается один модуль который ты цепляешь, вместо 10-ти

Добавлено через 1 минуту и 29 секунд
Цитата(gesper @  13.9.2014,  13:48 Найти цитируемый пост)
лишних глаз скрыть не собираюсь

тогда наверно и вопросы задавать не надо... а то еще догадаются

Автор: gesper 13.9.2014, 16:04
Цитата(drkot @ 13.9.2014,  13:10)
Код

unit myclass;

interface

uses
  Controls;

type
  TMyButton = TButton;



если правильно понял, то так.
в итоге получается один модуль который ты цепляешь, вместо 10-ти

Добавлено @ 13:12
Цитата(gesper @  13.9.2014,  13:48 Найти цитируемый пост)
лишних глаз скрыть не собираюсь

тогда наверно и вопросы задавать не надо... а то еще догадаются

Если вместо классов будут мои, то без модуля описывающего TButton компилятор не скомпилирует программу.

Автор: drkot 13.9.2014, 18:29
Цитата(gesper @  13.9.2014,  17:04 Найти цитируемый пост)
Если вместо классов будут мои,

мои что? кто? как?

если Вы не можете поставить вопрос, то как вы ожидаете увидеть ответ?

Автор: kami 13.9.2014, 22:04
Цитата(gesper @  13.9.2014,  12:48 Найти цитируемый пост)
Т.е. технология из моих вариантов только одна - клепать интерфейсы? Надеялся, что еще есть варианты)

Хм... Варианты есть. Это варианты smile
Например:
Код

uses
  ObjComAuto;

type
  {$METHODINFO ON}
  TSampleObject = class(TObject)
  published
    function MyMethod: integer;
    procedure MyMethod1(i, j, k: Integer);
  end;
  {$METHODINFO OFF}

procedure TForm2.btn2Click(Sender: TObject);
var
  V: OLEVariant;
begin
    V := TObjectDispatch.Create(TSampleObject.Create) as IDispatch;
    V.MyMethod;  // несмотря на то, что OLEVariant понятия не имеет ни о каких методах TSampleObject, это не мешает ему их выполнить.
    V.MyMethod1(0, 1, 2);
end;

Переменные, которые "эти другие ваши классы" объявляем как OLEVariant, снабжаем документацией и вперед.
Только сразу смиритесь с меньшей скоростью работы...

Автор: stanilar 15.9.2014, 23:06
Не знаю, поможет или нет, но можно возвратить класс через функцию.

Автор: gesper 17.9.2014, 02:11
Цитата(stanilar @  15.9.2014,  23:06 Найти цитируемый пост)
Не знаю, поможет или нет, но можно возвратить класс через функцию. 

Как? Есть пример из dll в exe такой функции?

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