![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Можно ли как то сделать чтобы можно было классы (объявление) засунуть в dll , а потом их брать юзать , наследовать?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
на счет наследовать сомневаюсь а вообще можно. Пример: технология COM
|
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 23 Всего: 51 |
в DRKB и/или на DelphiKingdom
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
сиба посмотрим в чем отличие от dll у них? читал где то что это теже я... только в профиль? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Не совсем. Просто bpl можно переименовать в dll и юзать как обычную dll.
Но если ее юзать, как bpl, то тогда можно использовать полностью весь их функционал. Например - поставь в настройках проекта "юзать bpl". Программка станет килов 20. Но тем не менее, она спокойно подключает rtl.bpl и VCL.bpl. Спокойненько достает оттуда TForm, создает его, достает TButton и т.д Ты можешь спокойно пронаследовать , который сидит в rtl.bpl, совершенно не заботясь, сто код класса сидит там, а не в твоей программе. Аналогично можешь построить свою bpl, расположить в ней класс, а в программе, хоть юзае его, хоть наследуй... Вобщем работай как обычно. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
А
и доставать из нее классы и наследовать получится? Добавлено @ 16:10 Вообще то думалось создать dll понармальному , только с возможностью экспорта классов или это никак? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нет, если переименовать в dll и работать, как с dll, то не получится
![]() Только, если работать, как с bpl.
По нормальному никак. Один из вариантов: создаешь класс, а методы ему назначаешь из dll. В dll же для каждого метода принимаешь на один параметр больше - указатель на Self. Но это довольно странная затея. А вообще зачем тебе dll? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Как с ним работать? точнее про заднии... ![]() если честно, мне не надо, попросили меня о помощи, я помогаю по мере сил ![]() ![]() Смысл помощи: есть исходник на С++ с классами , ф-циями... надо заюзать в дельфи эти классы? Добавлено @ 16:41 не переписывая исходник на дельфи, во! Добавлено @ 16:42 PS Интересная задача вот и взялся ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Ну, если из C++, то тогда только COM.
Само понятие структур разное. Напрямую никак не пронести. Можно еще написать объектную обертку для функций dll, а сами функции уже будут управлять объектом внутри dll. Но это как-то коряво. Но работать будет. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Через
можно только созавать объекты , а наследовать как? иль плохо искал? ну структуру можно подобрать схожую ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Только нужно правильно расписать интерфейс, пронаследовать до полноценного класса. После этого можешь наследовать класс дальше, как обычный класс Delphi. не выйдет. Разные типы данных. Разная адресация. Нокогда не попадешь. Нужно наводить мосты в виде функций и колбэков. Это не очень радостное занятие. Лучше для начала попробуй COM. Для этого его и создавали. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
а пример такого чуда есть ? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Какой тут пример.
Создаешь обычный интерфейс. Прописываешь в нем все методы класса, который в COM. Потом просто наследуешь класс от InterfacedPersistent и данного интерфейса. Получаешь нормальный человеческий класс. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Это что вроде прочитал , все что видел , этого не встречал? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Лучше создай топик в Delphi: ActiveX/СОМ/CORBA.
Я в COM'ах не силен. Поэтому и не модерю этот раздел. Там тебе лучше объяснят. |
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Я в книге какой-то читал, что невозможно полноценно юзать классы, которые находятся в RunTime Library.
-------------------- Ll 2 |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Snowy, cgспабо за инфу
![]() Guedda, а разве dll относятся к ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
dll - Dynamic Link Library
Полноценно юзать нельзя. Но, если реализовать COM, то на его базе вполне реально создать рабочий класс. (хорошо звучит - рабочий класс ![]() Если полноценно прописать интерфейс, то наследник будет вообще не отличим от класса дельфи. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Ну этот вы уже перебираете... Наследовать от класса написаного на другом языке можно только в .NET(и то только при соблюдении CLS). С другими языками такая радость не пройдет. COM же оперирует интерфейсами, а не классами...
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А что мешает пронаследовать интерфейс?
|
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
При наследовании интерфейса не наследуется физическая реализация его логики. Т.е. это просто скелет, работу которого ты сам должен расписать. Ни о каком наследовании реализации его логики там речи не идет.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Mu57Di3 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 20.11.2005 Где: Калуга Репутация: нет Всего: нет |
Как я понял из вышесказанного ... что в DLL вообще нельзя запихивать классы. И нельзя просто написать заголовочный файл как в С++ и по человечески его использовать. А на С++ моно по человечески использовать класс из DLL?
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нет. Dll для этого не предназначена.
|
|||
|
||||
Mu57Di3 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 20.11.2005 Где: Калуга Репутация: нет Всего: нет |
Ну ваще зашибись а как мне класс отдать в использование Сишному программисту есть такая необходимость.
|
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
В ActiveXе
-------------------- Ll 2 |
|||
|
||||
Mu57Di3 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 20.11.2005 Где: Калуга Репутация: нет Всего: нет |
Ну это уже извращение.
|
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Извини, по другому вряд ли получится...
Либо через COM делай -------------------- Ll 2 |
|||
|
||||
Mu57Di3 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 20.11.2005 Где: Калуга Репутация: нет Всего: нет |
Вся идея работы это кроссплатформенность под Линуксом нет СОМ'а. Это класс для работы с ogg форматом через OpenAL
Это сообщение отредактировал(а) Mu57Di3 - 21.2.2006, 09:57 |
|||
|
||||
DeemA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 30.5.2007 Репутация: нет Всего: нет |
Подскажите как использовать объект класа, обьявленого в ДЛЛ, в програме.
и еще Динамическая загрузка DLL как????(Примером) |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
DeemA, ты тему хоть сначала то прочитай. и создай свою отдельную.
полноценно использовать класс, объявленный в длл, нельзя. юзай интерфейсы. по динамической загрузке примеров море. ищи по LoadLibrary -------------------- There are always someone smarter than you... |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
На Visual C++ тоже нужно использовать расширенные MFC Dll ки которые не понимает делфи. А изнутри C++ объекты так вообще отличаются от делфийских. Потому кроме COM тут вообще нет вариантов.
Лучше этого вообще не делать без серьезных на то причин. Возни много. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |