![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Экспорт / импорт (dll) функций из класса [D7]
parovoZZ © (2006-06-27 05:35:00)
Страницы: < 1 2 3 4 5 6 7 8 9 10 >
К примеру, запись
exports
TMyClass.myFunc name 'MyFunc';
ошибочна. А как быть?
Romkin (2006-06-29 16:56:00) [41]Многоуважаемые господа, позвольте мне, как скромному читателю Ваших реплик, нижайше поинтересоваться Вашими планами и замыслами дальнейшего развития сего, без сомнения будь сказано, наизамечательнейшего диалога?
:-Р
Шпиён (2006-06-29 16:44:00) [42]
> Игорь Шевченко © (29.06.06 16:41) [144]
Взаимно надеюсь, что существование подобных случаев из рассмотрения не исключается.
Игорь Шевченко (2006-06-29 16:41:00) [43]Шпиён (29.06.06 16:37) [143]
Я очень надеюсь, что мы в этой ветке не рассматриваем исключительно случаи, когда при необходимости создания DLL у нас имеется готовый объект (неважно откуда) с необходимой функциональностью.
Шпиён (2006-06-29 16:37:00) [44]
> Игорь Шевченко © (29.06.06 16:33) [142]
А я где-нибудь утверждал, что это надо делать в каждой необходимой dll?
Игорь Шевченко (2006-06-29 16:33:00) [45]Шпиён (29.06.06 16:32) [141]
На каждую необходимую DLL готовых объектов не напасешься.
Шпиён (2006-06-29 16:32:00) [46]>Игорь Шевченко © (29.06.06 16:08) [135]
Вообразить можно всё что угодно. А работать придётся с тем, что есть на самом деле.
<offtopic>
вообрази, что у тебя дача на Канарах есть. Наслаждайся -)
</offtopic>
Игорь Шевченко (2006-06-29 16:22:00) [47]BiN © (29.06.06 16:12) [137]
> А зачем? Можно же и без классов, и сущности не умножаются.
> (зато умножается головная боль)
В случае единого приложения или в случае, если разбиение приложения не влечет за собой дополнительной работы, головная боль отсутствует и сущности, как ни странно, не умножаются. Впрочем, есть примеры, когда ООП не приносит никакого выигрыша.
Шпиён (2006-06-29 16:21:00) [48]
> Romkin © (29.06.06 16:10) [136]
> А вот писать свой собственный
> объект для случая №1 - целесообразность сомнительна.
Так я с этим и не спорю -) Даже более того - согласен на 100%.
Fay (2006-06-29 16:12:00) [49]2 Игорь Шевченко © (29.06.06 16:08) [135]
А ещё можно вообразить, что длл уже есть. Ваще кайф.
BiN (2006-06-29 16:12:00) [50]
> Игорь Шевченко © (29.06.06 16:06) [134]
>
>
> ООП имеет смысл. Там, где можно экспортировать классы, например,
> в случае с разбивкой приложения на хост и дополнительные
> модули.
А зачем? Можно же и без классов, и сущности не умножаются. (зато умножается головная боль)
Romkin (2006-06-29 16:10:00) [51]Шпиён (29.06.06 16:04) [133] Я говорил теоретически :) Конечно, удобнее просто пользовать. А вот писать свой собственный объект для случая №1 - целесообразность сомнительна. Если уж нужно - есть третий путь :)))
Недавно сосед с моей помощью написал ActiveX lib для доступа к данным нашего сервера приложений, фактически - небольшую обертку над TDataset. И порядок: объект с агрегацией, из 1С и офиса работает.
Игорь Шевченко (2006-06-29 16:08:00) [52]Шпиён (29.06.06 16:04) [133]
А теперь представь, что у тебя вместо объекта есть готовый процедурный код, который так же можно вставить в DLL, да еще и без дополнительно обертки. Возрадуйся :)
Игорь Шевченко (2006-06-29 16:06:00) [53]BiN © (29.06.06 15:54) [131]
> Следуя логике этих постов, ООП вообще не имеет смысла, т.
> к. всё можно реализовать и без него.
ООП имеет смысл. Там, где можно экспортировать классы, например, в случае с разбивкой приложения на хост и дополнительные модули.
Шпиён (2006-06-29 16:04:00) [54]
> Понятно, что можно просто вырезать код выполняемых методов
> объекта, вставить его в набор функций и обойтись без работы
> с объектом.
Особенно весело это делать, когда у объекта туева хуча унаследованных методов плюс еще внутри объект агрегирован -)
Шпиён (2006-06-29 16:01:00) [55]
> Это делать рекомендуется, как уже сказано, когда есть уже
> объект нужной функциональности, и при этом объемный.
> Это - случай, о котором говорит LVT.
Об этом случае сказал я. LVT назвал это "натяжкой", но в [63] переименовал в "здоровый компромисс". И то не без сарказма. ([46] [54] [63]).
Возможно, я сам виновник этого сарказма, потому как более чёткая формулировка ситуации [115] приведена много позже (в пылу дискуссии умные фразы не очень хорошо получаются).
BiN (2006-06-29 15:54:00) [56]
> Шпиён (29.06.06 15:34) [128]
>
>
> > BiN © (29.06.06 15:25) [126]
>
> [40] [42] [43] [56] [63]
Мдя, перечитал еще раз. Извиняюсь.
Следуя логике этих постов, ООП вообще не имеет смысла, т.к. всё можно реализовать и без него.
saxon (2006-06-29 15:51:00) [57]
> Romkin © (29.06.06 15:41) [129]
Жму руку! :)
Romkin (2006-06-29 15:41:00) [58]Дык! Юзверь вызывает функцию, внутре у ей
1. Создается объект
2. Заполняются его поля данными входных параметров
3. Что-то делается.
4. Заполняются выходные параметры данными полей класса.
5. Разрушается объект.
Это делать рекомендуется, как уже сказано, когда есть уже объект нужной функциональности, и при этом объемный.
Это - случай, о котором говорит LVT. Понятно, что можно просто вырезать код выполняемых методов объекта, вставить его в набор функций и обойтись без работы с объектом.
Насчет же использования объектов из dll есть хороший пример прямо перед глазами, Qt library. Delphi 6 и выше. Дело в том, что библиотека Qt - объектная, предоставляющая классы C++. Для использования в Delphi над ней сделали обертку, тоже dll, экспортировав всю работу с классами в виде функций. Затем в CLX сделали обертку над этой dll в виде набора классов. Прикольно? Фактически для CLX дело выглядит так, что она работает с классами в dll через вызов обычных функций этой dll.
Третий путь, как я уже говорил, использование интерфейсов - там уже даже не ООП, а компонент-ориентированное программирование. Кстати, не считайте, что это невыгодно: время на вызов метода класса в dll через VTable вполне сравнимо с простым вызовом метода обычного класса.
Четвертый путь - использование различных менеджеров объектов, SOAP, сервера приложений и тд. Но это уже не относится к теме.
Вот, пожалуй, и все случаи. Выбирайте, что больше нравится.
Шпиён (2006-06-29 15:34:00) [59]
> BiN © (29.06.06 15:25) [126]
[40] [42] [43] [56] [63]
Fay (2006-06-29 15:31:00) [60]2 BiN © (29.06.06 15:25) [126]
> говорит это в контексте сабжа, в контексте импорта/экспорта
Не поверю в это, пока он сам этого не скажет.
После чего начну сосневаться 8)
> Думаю, вы его просто неправильно поняли.
Вот и Шевченко Игорь так думает (похоже)... Но вы оба ошибаетесь.