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

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

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

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

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

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

DropBox, похоже, блокирует htm...
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 25.12.2011, 12:55   #42
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Хочу реализовать систему расширения программы, с параметрами:
1. Гибкость и простота использования для стороннего разработчика. Без граблей не обойдется, гибкостьобеспечивается максимумом возможностей с моей стороны, и хорошей документацией с примерами.
2. Возможность расширять мою программу, плагинами написанными на c++. Как мне это обеспечить?
3. Оптимальный способ реализации всего этого, для меня, как для разработчика основного приложения. На чем остановится?
всё это можно сделать через DLL с обычными функциями. Если всё правильно организовать, то никаких граблей не будет.

Тут вопрос состоит не в том через что делать плагины через COM или обычные функции. Вопрос в том, как всё сделать грамотно, правильно, гибко и удобно.
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии

Последний раз редактировалось haruhi; 25.12.2011 в 12:58.
haruhi вне форума Ответить с цитированием
Старый 25.12.2011, 17:17   #43
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

В том примере(на который я дал ссылку) плагин работает с TCanvas:
Код:
function PluginExec(Canvas:TCanvas):Boolean;
Справедливым будет вопрос, что делать с теми языками, где нет этого типа? К примеру, используя GNU C++? и
Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
... Что делать, когда плагин хочет реализовать человек, который не знает Delphi, но знает C++?
Думаю, что только остаётся Builder и то под вопросом...
ЗЫ: в своих программах плагины использовать не буду.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 25.12.2011, 17:21   #44
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Справедливым будет вопрос, что делать с теми языками, где нет этого типа? К примеру, используя GNU C++?
стоит выносить свои интерфейсы(можно процедурный интерфейс, а не ООП)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.12.2011, 17:36   #45
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
В том примере(на который я дал ссылку) плагин работает с TCanvas:
Код:
function PluginExec(Canvas:TCanvas):Boolean;
возможна ситуация что плагины скомпилированные на другой версии Delphi будут несовместимы с программой. Так как на объекты и классы стандартов нет и не будет.

нужно передавать либо HDC, либо реализовывать свой процедурный интерфейс, либо тот же COM
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 25.12.2011, 18:09   #46
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Вопрос

Небольшое размышление:

Плагин для интернет-браузера может использовать строковый интерфейс.
Передал в плагин строку(ссылку) и закачкой управляет уже плагин.
Плагин для графического редактора (например) может использовать интерфейс-std::массив битов состояний цвета квадратной матрицы изображения.
В плагине происходит преобразование в "свой" объект, который позволяет сделать какие-либо графические изменения. Обратно возвращается уже изменённый std::массив.

Из этого будет следовать, что расширению могут подвергнуться не все части приложения.
Оно должно быть грамотно написано (отделён интерфейс от логики и ООП в полном объёме ).

TCanvas унаследован от чего-то, тот унаследован ещё от чего-то. И как эту объектную вязь можно куда-то выгрузить я не имею ни малейшего представления
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook

Последний раз редактировалось xwicked; 25.12.2011 в 18:11.
xwicked вне форума Ответить с цитированием
Старый 25.12.2011, 18:30   #47
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от xwicked Посмотреть сообщение
TCanvas унаследован от чего-то, тот унаследован ещё от чего-то. И как эту объектную вязь можно куда-то выгрузить я не имею ни малейшего представления
просто просто передавать HDC вот и всё.
как альтернатива: передать плагину адреса функций, которые будут осуществлять рисование на канве
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 25.12.2011, 18:46   #48
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Если речь идёт только о винде, то в чём собственно вопрос? ТС нужен пример кода? Ну так дайте ему, кому не жалко...
Я думал тут серьёзная проблема
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 25.12.2011, 19:04   #49
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Речь тока под Windows. Примеров была масса(GunSmoker, в частности, давал очень хороший пример плугинизации ввиде интерфейсов(Подымалась тема на форуме)).

Допустим, плугинизация запилина на интерфейсах.
Но интерефейс описан в pas файле и завязан только на delphi(Типы, обекты и т.д).

Как предпологаемый интерфейс описать ну хотябы для c++ ?
Человек_Борща вне форума Ответить с цитированием
Старый 25.12.2011, 19:12   #50
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Как предпологаемый интерфейс описать ну хотябы для c++ ?
для всех типов обьектов которые хотите выносить, так же описывайте интерфейс.(например канва) это если нету готового.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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