Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 21:44   #11
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Да, но этот комментарий там по другой причине: межмодульное управление памятью, а не по причине межязыкового взаимодействия.

Т.е. даже если DLL и exe написаны в одной версии Delphi, то комментарий остаётся в силе - (просто так) использовать String нельзя (даже в Delphi). Нужен общий менеджер памяти. Тогда - можно.

Единственное - я бы заменил указание использовать PChar на указание использовать WideString. Всё же на дворе не 95-й год.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.12.2011, 21:49   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
Исходя из своего опыта экспериментирования с dll(C++) и вызова в Lazarus и Delphi, то могу предположить, что это не только возможно, но и ничего сложного при реализации быть не должно
Можно словесно описать как общается?:
плагин-DLL <=> PluginAPI.DLL <=> программа
Человек_Борща вне форума Ответить с цитированием
Старый 22.12.2011, 03:51   #13
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Восклицание

Плагины я не писал. Точнее разбирал только один пример в Qt4(C++), но там есть специальный интерфейс для загрузки плагина QPluginLoader.
Примеры из сети по Delphi приводить не буду, так как сам не проверял.
Я хотел сделать интерфейс к своему кроссворду, но достаточной силы желания у меня не появилось(тупо лень было ). Поэтому, когда сам попробую и реализую простейший пример - отпишусь. Буду юзать Delphi и Builder. Думаю для эксперимента сойдёт? Я тогда смогу словесно описать, что я делал.

Просто есть предположение, что если некоторые вещи обзывать сложными словами, то они становятся сложными...
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 22.12.2011, 07:31   #14
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Человек_Борща, я так понял, что хочется использовать интерфейсы и классы в плагинах. т.е. в PluginAPI описан некий интерфейс, который должны реализовать все плагины и через который программа будет с ними общаться. Простые DLL тут не помогут и нужно привлекать технологию COM. В этом случае уже будет не всё так легко и просто, но по другому с классами не получится. Другой вариант - забить на интерфейсы и из DLL экспортировать отдельные функции.
pu4koff вне форума Ответить с цитированием
Старый 22.12.2011, 09:37   #15
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

не понимаю людей которые постоянно всё усложняют. COM это масса геморроя, COM стоит использовать только в том случае если это действительно нужно, а плагины вполне можно реализовать и через обычные функции
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 22.12.2011, 11:36   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Где можно почитать про плугинизацию через COM? И вообще о COM?

xwicked, интересно как в квипе зделано. Там вроде и без всяких dll/com, просто pas и .h файлы.

haruhi, не думаю. Если я хочу достичь цели, полезу через любой геморой. (Со скайпом, к примеру, можно работать через COM).
Допустим я хочу дать разработчику свободу ввиде доступа к нескольким классам через интерфейс. И реализовывать доступ через тонны методов кажется плохой идеей.

Куда интереснее следующее, допустим программа позволяет прикрепить некий интерфейс плагина(IPluginInterf) который берёт начало от IMainPluginInterf.

Если разработка будет ограничена только делфистами, то можно спокойно раздавать pas с описанием интерфейса IMainPluginInterf(Яркий пример - Download Master).

А вот если я хочу, чтобы под мою программу можно было писать плагины на любом языке програмимирования?
Тут подсказали вариант с некой DLL. К которой достаточно будет просто переводить модуль описания этой DLL на разные языки программирования. Главное, как эта DLL создаст экземпляр интерфейса для некого плагина(Аналогично тому, как анонимус наследует IPluginInterf от IMainPluginInterf и передаст его программе через ед-ую экспортируемую функцию)?

Или наследование основного плагин-интерфейса не обязательное условие, котрое можно обойти просто создавая новый экземпляр интерфейса через Create, и задачая ему свой GUID?

А передача просто, DLLplugin прсто вызвает создание экземпляра интерфейса из pluginapi.dll, а затем созданный интерфейс сама передаёт основной программе через экспортируемый метод.

Последний раз редактировалось Человек_Борща; 22.12.2011 в 11:51.
Человек_Борща вне форума Ответить с цитированием
Старый 22.12.2011, 12:38   #17
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
haruhi, не думаю. Если я хочу достичь цели, полезу через любой геморой. (Со скайпом, к примеру, можно работать через COM).
Допустим я хочу дать разработчику свободу ввиде доступа к нескольким классам через интерфейс. И реализовывать доступ через тонны методов кажется плохой идеей.
тут главное простота и удобность для разработчиков плагинов
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 22.12.2011, 12:59   #18
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

haruhi, что проще и удобнее для стороннего разработчика, по мимо хорошей документации?

Последний раз редактировалось Человек_Борща; 22.12.2011 в 13:03.
Человек_Борща вне форума Ответить с цитированием
Старый 22.12.2011, 13:10   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Допустим программа предостовляет некий модуль с интерфейсами для создания плагина.
Ну и чудно.
Цитата:
haruhi, что проще и удобнее для стороннего разработчика, по мимо хорошей документации?
Вот и опишите интерфейс. Я бы предусмотрел:
1. Подключение
2. Инициализация
3. Функции плагина (жестко - 5 функций с одним параметром, 10 функций с 2-мя параметрами и т.д.).
4. Освобождение ресурсов
5. Выгрузка длл
Работа с длл - это последовательный обход всех пунктов (ну только в 3-ем функции могут вызываться как попало, в соответствии с задачей).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 22.12.2011 в 13:15.
Utkin вне форума Ответить с цитированием
Старый 22.12.2011, 13:46   #20
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
haruhi, что проще и удобнее для стороннего разработчика, по мимо хорошей документации?
ну сами попробуйте разобраться с COM и потом сами подуайте что проще, например, я ниасилила COM-технологию.

Хороший вариант это DLL со слудующими функциями
Код:
InitPlugin(Params) //Params - структура которая сожержит указатели на функции для взаимодействия с основной программой
PluginEventHandler(..............)//уведомления о каких-либо событиях к программе
ReleasePlugin()
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание программы на Delphi (возможно за вознаграждение) pr9n9 Фриланс 10 14.03.2011 13:17
Плагины для gta-vc? VintProg Gamedev - cоздание игр: Unity, OpenGL, DirectX 16 27.06.2010 10:18
подключение к Excel из delphi через ODBC.возможно ли это без глюков? betirsolt БД в Delphi 0 13.06.2010 01:05
Автосохранение исходников в Delphi. Это возможно? Kottik Софт 16 20.09.2009 17:36