Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Экспорт / импорт (dll) функций из класса [D7]


Страницы:   1 2 3 4 5 6 7 8 9 10

parovoZZ ©   (2006-06-27 05:35:00) 

К примеру, запись
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)

> Думаю, вы его просто неправильно поняли.
Вот и Шевченко  Игорь так думает (похоже)... Но вы оба ошибаетесь.


Страницы:   1 2 3 4 5 6 7 8 9 10

Наверх

Титульная страница Поиск, карта сайта Написать письмо