![]() |
| ||
|
|
Новости |
Поиск |
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';
ошибочна. А как быть?
Leonid Troyanovsky (2006-06-28 21:38:00) [121]
> Пусик © (28.06.06 21:22) [62]
> Факты - они для всех едины.
Ну, и в чем есть сермяжная правда жизни Windows?
> я согласна и не согласна, отфильтровывать их по категориям?
Конечно, лучше уж по категориям, чем огульно.
Бо, тезисов я, IMHO, предоставил вполне.
> Убедительных доводов против моего мнения я не увидела пока.
Ну, а я не увидел к-л обоснований оного мнения.
За исключением, наверное, частных, т.е. " у меня все ок".
> То, что надо осторожно работать в DLL - и так понятно, думаю,
> что тут комментарии и не требуются.
А кто говорил про осторожно?
Я, например, говорил не таясь: работать с длл не надо.
> Ну вот не вижу я минусов. НЕ ВИЖУ.
Не стоит этим гордится, IMHO.
У некотрых, пардон, дальтонизм g(gправда, у женщин редкость),
у некоторых близорукость, дальнозоркость или астигматизм.
--
Regards, LVT.
Шпиён (2006-06-28 21:37:00) [122]
> Leonid Troyanovsky © (28.06.06 21:24) [63]
Считаешь, нужно было СОМ прикрутить? Так накладные расходы почище, чем на создание объекта в dll будут.
А "трахаться" с чужим кодом в 270К, когда на все - неделя - мазохистов нет, это и называется - неудобство.
Хорошая программа - та, которая работает 1)правильно 2)надежно 3)ресурсов потребляет не больше, чем допустимо . Имхо, единственный критерий.
А что там у нее внутри - это внутреннее дело программиста.
Но лучше уж объекты, чем "лапша", если дальнейшая поддержка предполагается.
Пусик (2006-06-28 21:34:00) [123]Ладно. Надо завязывать. Все равно агументов, похоже, хороших нет.
Пусть каждый остается при своем мнении.
Leonid Troyanovsky (2006-06-28 21:24:00) [124]
> Шпиён (28.06.06 20:44) [54]
> Ни одной натяжки. Абсолютно реальная ситуация.
Реальность, IMHO, и есть причина большинства натяжек.
Назовем это здоровым компромиссом.
Т.е., никому не хотелось трахаться с чужим кодом и
все потекли по течению.
Однако, это вовсе не основание для того, чтобы включать
изваяенного франкейштейна в "плагин" (видимо, dll, sorry).
--
Regards, LVT.
Пусик (2006-06-28 21:22:00) [125]
> Leonid Troyanovsky © (28.06.06 21:12) [58]
>Но, дело ж не
> только в нас?
А в ком?
Есть мы - те, кто дискутирует, а есть факты из жизни Windows.
Факты - они для всех едины.
> Огласите весь список, пжлст.
Зачем? Дискуссия по поводу "использовать или не использовать ООП в DLL" имеет мало отношения к начальной теме.
Имеет ли смысл вытаскивать все те высказывания, с которыми я согласна и не согласна, отфильтровывать их по категориям?
> Т.е., каждый - сам себе злобный Буратино.
Опять же - дело не взлобности к самому себе, а в поисках истины.
Убедительных доводов против моего мнения я не увидела пока.
То, что надо осторожно работать в DLL - и так понятно, думаю, что тут комментарии и не требуются.
Ну вот не вижу я минусов. НЕ ВИЖУ.
Leonid Troyanovsky (2006-06-28 21:17:00) [126]
> Leonid Troyanovsky © (28.06.06 21:16) [60]
> но, и в рамках _определенного_ протокола.
Прототипа, тьфу.
Sorry.
--
Regards, LVT.
Шпиён (2006-06-28 21:16:00) [127]
> В-третьих, какие могут быть дополнительные расходы при использовании
> классов?
> Выделение памяти? Какая разница, выделяется память для простого
> типа или для объекта?
Тут ты перегибаешь. Накладные расходы на использование объектов все же больше. Другое дело, что они компенсируются упрощением повторного использования и поддержки кода.
"Всякий овощ хорош в своё время"(с)
Leonid Troyanovsky (2006-06-28 21:16:00) [128]
> Пусик © (28.06.06 20:37) [50]
> Совершенно верно. Не важно. Важен факт, что DLL может иметь
> вполне самостоятельное значение для вызова функций вполне
> определенного
> прототипа
Странное понимение самостоятельности.
Т.е., мало что в рамках процесса, предоставляемого rundll,
но, и в рамках _определенного_ протокола.
--
Regards, LVT.
Leonid Troyanovsky (2006-06-28 21:12:00) [129]
> Пусик © (28.06.06 20:34) [49]
> И почему же я должна отказаться от ООП? Вследствие того,
> что тебе не нравится использование ООП в DLL?
У меня не было цели отвратить Пусика от оных деяний.
Т.е., каждый - сам себе злобный Буратино.
Что не нравится? Можно перечитать, IMHO, я не в многих
постах столь многословен.
> У меня счастье и отсуствие проблем и с DLL вместе. Чего
> и тебе желаю.
Спасибо.
Но, дело ж не только в нас?
> Почти единственное высказывание, с которым можно согласиться.
Огласите весь список, пжлст.
--
Regards, LVT.
Пусик (2006-06-28 21:09:00) [130]
> Классическая dll ориентирована на работу лишь с простыми
> (необъектными) типами.Поэтому, создание, изменение и разрушение
> объектовесть лишние расходы в оной модели.
Не согласна.
Во-первых, кто сказал, что DLL ориентирована на работу с простыми типами?
ASM в прикладном программировании, как я понимаю, практически нет смысла использовать. ТОгла причем здесь простые типы?
Во-вторых, как уже выше было написано, хост-приложению совершенно без разницы, что делается внутри DLL.
В-третьих, какие могут быть дополнительные расходы при использовании классов?
Выделение памяти? Какая разница, выделяется память для простого типа или для объекта?
Leonid Troyanovsky (2006-06-28 20:58:00) [131]
> Пусик © (28.06.06 20:28) [48]
> Вопрос такой: почему для работы в DLL классы не предназначены?
> Какие есть причины не использовать классы в DLL?
Как я понял, достаточно ответить лишь на один из них?
OK. Отвечаю.
Классическая dll ориентирована на работу лишь с простыми
(необъектными) типами.
Поэтому, создание, изменение и разрушение объектов
есть лишние расходы в оной модели.
Возможен вопрос, а почему же в exe возможно
построение объектного мира, скажем дельфийского?
Отвечаю: exe, т.е. породитель процесса играет именно
ту самую роль "самодостаточности" в рамках win32,
которые некотрые упорно (необоснованно) приписывают dll.
--
Regards, LVT.
Leonid Troyanovsky (2006-06-28 20:48:00) [132]
> Fay © (28.06.06 20:12) [47]
Отлучился на службу, а тут вовсю отцвели стереотипы :)
Не сдержался, sorry.
--
Regards, LVT.
Пусик (2006-06-28 20:44:00) [133]
> Fay © (28.06.06 20:41) [51]
> 2 Пусик © (28.06.06 20:37) [50]Не осилил 3-е предложение.
> ..
Идущий осилит.
Шпиён (2006-06-28 20:44:00) [134]
> Leonid Troyanovsky © (28.06.06 20:06) [46]
> Чего-то больно много натяжек (нет, чтоб по-простому, на
> кастрюльках).
Ни одной натяжки. Абсолютно реальная ситуация.
Задача была очень быстро создать smpp-клиент для функционального и нагрузочного тестирования sms-центра. Причем клиент именно "скриптовый", позволяющий максимально просто (так, чтобы с этим мог справиться не программист) описывать выполнять различные сценарии работы, в том числе и некорректные. Плюс - возможность трассировки (дампы пакетов).
Скриптовый интерпретатор и все его вывихи - следовало принимать как данность (наш плагин - не единственный, плагины можно подключать по несколько штук, цепочкой, добавляя нужные команды), компоненты - тоже. Времени на собственную реализацию протокола SMPP - ноль целых, шиш десятых (и нецелесообразно при наличии готовой и отлаженной реализации).
Клиент создан и работает.
Пусик (2006-06-28 20:43:00) [135]Все же хотелось бы услышать на ясно и четко поставленный вопрос в постах [12],[29],[34],[48] такой же четкий и ясный ответ.
Аргументы навроде "Нет нужды использовать" - аргументами, естественно, не являются. Это то же самое, что нет нужды использовать стиральную машину - ведь можно руками постирать.
Fay (2006-06-28 20:41:00) [136]2 Пусик © (28.06.06 20:37) [50]
Не осилил 3-е предложение...
М.б. перефразируешь?
Пусик (2006-06-28 20:37:00) [137]
> Leonid Troyanovsky © (28.06.06 20:00) [45]
> > Пусик © (28.06.06 11:22) [34] > Можно. Например, использовать
> RunDll32.exe для выполнения > некоторой функции из DLL.Оная
> предназначена лишь для вызова функций вполне определенного
> прототипа.Да, собс-но, это не так уж и важно.
Совершенно верно. Не важно. Важен факт, что DLL может иметь вполне самостоятельное значение для вызова функций вполне определенного
прототипа
Пусик (2006-06-28 20:34:00) [138]
> Leonid Troyanovsky © (28.06.06 19:31) [40]
> Я пока не видел аргументов за использование ООП в dll.
А я пока не видела против.
> Допустим даже, что у нас есть доводы за dll.Как, собс-но,
> мы должны применить ООП?Видимо:1. Создать объект2. Заполнить
> его поля некоторыми простых типами,переданными из хоста.
> 3. Сделать некоторые пассы.4. Вернуть хосту нужные простые
> типы из полей.5. Разрушить объект.
> Налицо некоторые overheads. Т.е., все это совершенно спокойноможно
> свести к неким преобразованиям простых типов, без мучительных
> раздумий, как уследить за распределеннойв длл памяти, что
> будет, если будет повторный вызов в промежуткемежду 1 -
> 6 и т.д.
Можно свести все к простым типам. Тогда для чего создано ООП? Для облегчения разработки, однако.
И почему же я должна отказаться от ООП? Вследствие того, что тебе не нравится использование ООП в DLL?
> Извольте-с.Не используйте объекты в длл и будет вам счастье.
У меня счастье и отсуствие проблем и с DLL вместе. Чего и тебе желаю.
> И, вообще, не используйте длл, если без оной можно обойтись.
Почти единственное высказывание, с которым можно согласиться.
Пусик (2006-06-28 20:28:00) [139]Цитата:
Leonid Troyanovsky © (27.06.06 21:40) [7]
Для работы в dll классы не предназначены.
Вопрос такой: почему для работы в DLL классы не предназначены?
Какие есть причины не использовать классы в DLL?
Fay (2006-06-28 20:12:00) [140]Леонид разбушевался 8)