Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы и DLL, Разбиение программы на модули 
:(
    Опции темы
Unregistered
Дата 29.5.2003, 16:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1. TLB Дельфя тебе может написать сама для любой Dll (если ты ее попросишь)
2. "Экзотические типы" придется использовать однозначно (деректива stdcall это какрас для конвертации праметров процедур из "экзотического" (нравиться мне слово) типа в паскалевский)
3. Наверное BPL для тебя и вправду лучший вариант, но хорошо ли ты себе представляешь задачу? расскажи почему возникла необходимость "делить" проект? почему нельзя пользоваться общей библиотекой классов?
  Вверх
altarasjuk
Дата 29.5.2003, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 7.5.2003
Где: Харьков

Репутация: 1
Всего: 1



Короче ситуация такова:
Есто проект. Этот проект постоянно совершенствуется и обновляется. Тянуть из инета каждый раз по 3 метра не очень. Вот и разбиваю, чтобы вытягивать только новое.


--------------------
Правда - изобретение маньяков: колет глаза и режет уши.
PM MAIL ICQ   Вверх
Unregistered
Дата 29.5.2003, 16:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











можно написать библиотеку классов (набор исходников) и при внесение изменений в тот или иной класс обновлять соответствующий исходник и перекомпилять проект (для меня это лучший вариант, я тоже не доверяю ole типам smile.gif и мне очень нравиться наследовать). Если приложение не распределенное и используются восновном невизуальные компоненты, то очень даже неплохо. В остальных ActiveX, но это уже фенкциональная часть приложения (не класс! а экземпляры) унаследовать от которой нихрена не получиться...
  Вверх
altarasjuk
Дата 29.5.2003, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 7.5.2003
Где: Харьков

Репутация: 1
Всего: 1



Цитата
и перекомпилять проект

Вот это-то и оно. Ради того, чтобы сам exe не перекомпиливать это всё и затеено!!!


--------------------
Правда - изобретение маньяков: колет глаза и режет уши.
PM MAIL ICQ   Вверх
Unregistered
Дата 29.5.2003, 18:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну и ладноть...
так какие проблемы то, давай сделаем на ActiveX...
расскажи что конкретно хочешь, пока время есть вместе замусолим...;)
  Вверх
Cashey
Дата 29.5.2003, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Цитата

В качестве ДЛЛ можно использовать пакеты Дельфи (BPL), поскольку они на самом деле являются ДЛЛ, но обладают большими возможностями при использовании классов.

Если ваша программа включает VisualCLX компоненты, Вы должны использовать пакеты вместо DLL. Только пакеты могут управлять запуском и закрытием Qt


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Unregistered
Дата 30.5.2003, 10:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Cashey Спасибо, друг...
ты ответил на мой извечный вопрос: "почему не регистрятся некоторые Dll?..." спасибо...
  Вверх
altarasjuk
Дата 30.5.2003, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 7.5.2003
Где: Харьков

Репутация: 1
Всего: 1



Цитата(altarasjuk @ 29.5.2003, 17:27)
Цитата
и перекомпилять проект

Вот это-то и оно. Ради того, чтобы сам exe не перекомпиливать это всё и затеено!!!

Unregistered
Я может неправильно выразился, но всё это для того, чтобы НЕ ПЕРЕКОМПИЛИВАТЬ ПРОЕКТ, А ТОЛЬКО ОДИН МОДУЛЬ!


--------------------
Правда - изобретение маньяков: колет глаза и режет уши.
PM MAIL ICQ   Вверх
Unregistered
Дата 30.5.2003, 11:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











По мне так если прога не распределенная и средство разработки одно то кроме гемороя с этой модульностью ничего не получиться. Компоненты писать безусловно надо, но зачем их в dll прятать...?
  Вверх
altarasjuk
Дата 30.5.2003, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 7.5.2003
Где: Харьков

Репутация: 1
Всего: 1



То есть если я понял то есть только один вариант - компоненты. Но в них есть недостаток - расширение.
Не хотелось бы, чтобы народу с первого взгляда было понятно на чём писано... Да и DLL как-то попривычней для взгляда... Ну если тока так - то буду разделять на компоненты.
А вот по поводу гемороя - тут никуда ни денешся.


--------------------
Правда - изобретение маньяков: колет глаза и режет уши.
PM MAIL ICQ   Вверх
Fantasist
Дата 30.5.2003, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Честно говоря, до сих пор не понял проблему. Что значит "экспортировать классы"? Как ты это себе предствляешь? Если ты используешь эти классы в екзешнике, то описание этих классов тебе все равно надо включить в код екзешника, а для этого вполне подойдут обыкновенные исходники. А уж указатель на экземпляр класса передать вообще нет никаких проблем. В хорошой реализации это будет выглядеть так:

mobj_ifc.pas
Код


interface

  IMObj=interface
     procedure Method1;
     procedure Method2;
  end;



mobj_imp.pas
Код


interface
uses
  mobj_ifc;

  TMObj=class(TInterfacedObject,IMObj)
     procedure Method1;
     procedure Method2;
  end;

implementation

//implementation of  TMObj
......


mobj_dll.dpr
Код

uses
 mobj_imp, mobj_ifc;

function CreateMObj:IMObj; stdcall;
begin
  Result:=TMObj.Create;
end;

exports
 CreateMObj;


main_exe.pas
Код

uses
  mobj_ifc;


interface

function CreateMObj:IMObj; stdcall;

implementation

function CreateMObj;  external 'mobj_dll.dll' name 'CreateMObj';





--------------------
Волны гасят ветер...
PM MAIL   Вверх
Unregistered
Дата 30.5.2003, 16:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а меня есть сомнения (и большие) что приведенный код заработает.
1. неплохо было бы в маинехе в интерфейсе хотябы описать интерфейс имобж
2. у длл и приложения разные адресные пространства и хз что за указатель получиться. Для идентификации интерфейсов используют гуид, а для получения экземпляра по интерфейсу - фабрику классов... хотя в дельфях все выглядит очень приметивно.
  Вверх
altarasjuk
Дата 30.5.2003, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 7.5.2003
Где: Харьков

Репутация: 1
Всего: 1



Да вообщем то спасибо, народ.
Вообщем я решил остановиться на компонентах.


--------------------
Правда - изобретение маньяков: колет глаза и режет уши.
PM MAIL ICQ   Вверх
Fantasist
Дата 30.5.2003, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Цитата
1. неплохо было бы в маинехе в интерфейсе хотябы описать интерфейс имобж



main_exe.pas
Код

uses
 mobj_ifc;
....


На это вам стоило бы обратить внимание.

Цитата
2. у длл и приложения разные адресные пространства и хз что за указатель получиться


Ничего подобного - адресное пространство одно и то же, указатель передавать вполне можно.


Цитата
Для идентификации интерфейсов используют гуид, а для получения экземпляра по интерфейсу - фабрику классов...


GUID добавить не проблема - Shift+Сtrl+G. Фабрикой классов как раз и выступает функция CreateMObj. Делать отдельный объект+интерфейс совершенно необязательно.



--------------------
Волны гасят ветер...
PM MAIL   Вверх
Unregistered
Дата 2.6.2003, 11:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Прошу прощения за неточности (а точнее говоря бред) который написал выше (был пьянsmile.gif)
однако, нельзя ли вместо uses mobj_ifc; использовать только гуид интерфейса? если длл зарегистрирована на др. машине можно ли будет пользоваться указателем на интерфейс (CreateMObj Result)?

  Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.