Текущий архив: 2006.05.07;
Скачать: CL | DM;
ВнизПроектирование взаимодействия плагина с программой Найти похожие ветки
← →
Kolan © (2006-03-29 21:24) [0]Здравствуйте,
Есть готовая работающая программа, написаная мной. Она проводит измерение и складывает результаты в запись. Запись здаровая с дин массивами, строками итд...
Появилась задача обработать эти данные иным способом. Для этого хочу использовать плагин на основе bpl. Причин этого несколько...
Вопрос в том как организовать связь плагина с программой.
Вижу несколько вариантов:
1. Сделать в плагине процедуру типа:
procedure GiveRec(R: TRec);
И при получении результатов измерения вызывать её...
Минус в том, что придется все таки вносить в гл. программу изменения. И к томуже вдруг плагин захочет что-то еще кроме этой записи.
2. Сделать так, чтобы плагин сам брал что хотел из программы. Те нужна ему запись - взял скопировал....
Как это реализовать? Подойдет ли система bpl, или придется ковырять COM, который я вообще не знаю?
Может есть и другие способы решить проблему?
← →
Reindeer Moss Eater © (2006-03-29 22:50) [1]Возьми программу с поддержкой плугинов и изучи вопрос взаимодействия.
Не исходники программы и плугина, а принцип.
← →
Германн © (2006-03-30 01:38) [2]
> Минус в том, что придется все таки вносить в гл. программу
> изменения. И к томуже вдруг плагин захочет что-то еще кроме
> этой записи.
Если один из двух взаимодействующих модулей (программ) не умеет чего-то делать, то никакой плагин не сможет его (её) научить этому. Имхо.
Упрости задачу. Ну например, в главной программе создаётся запись, содержащая результаты измерений. Затем в ней вызывается функция из плагина, которая обрабатывает эти результаты по некоему алгоритму. И обработанные результаты возвращает в основную программу в приемлемом виде (таблица, график и т.п.).
← →
Kolan © (2006-03-30 11:43) [3]Германн © (30.03.06 01:38) [2]
Ну я так и хотел. Единственно еотображать результаты должен сам плагин...
Но мне кажется нужно сделать систему типа - "Бери что хчешь и делай с ним что тебе надо...".
Reindeer Moss Eater © (29.03.06 22:50) [1]
Где можно взять принцип..?
← →
Kolan © (2006-03-30 13:19) [4]Правильно ли я понял, что для решения этой задачи подойдет Сервер автоматизации... Тогда вообще плагин не нужен. Просто осн. программу преврашаю в сервер. А там берите что хотите...
← →
Romkin © (2006-03-30 14:12) [5]Kolan © (30.03.06 13:19) [4] Брать можно будет то, что ты явно указал в интерфейсах. Поэтому то, что ты будешь передавать и получать и как нужно продумать заранее.
← →
tesseract © (2006-03-30 14:15) [6]
> осн. программу преврашаю в сервер.
Не в сервер, а в клиента :-).
← →
Kolan © (2006-03-30 14:15) [7]Не ну это понятно... Просто с сервером я не навязываю, те не заставляю получить данные.
А если сделать так:
Германн © (30.03.06 01:38) [2]
Затем в ней вызывается функция из плагина, которая обрабатывает эти результаты по некоему алгоритму.
То тут стороння програма будет получать данные всегда, даже если они ей не нужны сейчас..
← →
Romkin © (2006-03-30 14:20) [8]tesseract © (30.03.06 14:15) [6] Как правило, когда делаешь все на основе СОМ, сам черт не поймет, где сервер а где клиент :))) Получаются интерфейсы, обменивающиеся данными в виде интерфейсов...
← →
Kolan © (2006-03-30 14:27) [9]tesseract © (30.03.06 14:15) [6]
Как так? Вот есть моя программа. Внешняя посылает ей запрос типа: "Да что нибудь". Она отдает... Или нетак? Ладно пойду ка я читать, а то шас бреда понапишу тут :)
← →
Kolan © (2006-03-31 17:10) [10]Спроетировал :)... Плагином и не пахнет правда....
Имеется программа - COM сервер(COM Объект).
И клиент.
Управлять сервером понятно как. Как получить простой тип данных вроде числа или строки тоже понятно.
А как передать клиенту запись?
← →
tesseract © (2006-03-31 18:20) [11]
> Как правило, когда делаешь все на основе СОМ, сам черт не
> поймет, где сервер а где клиент :))) Получаются интерфейсы,
> обменивающиеся данными в виде интерфейсов...
Угу и главное в какой области памяти находится переменная.
Страницы: 1 вся ветка
Текущий архив: 2006.05.07;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.01 c