![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 12.04.2013
Сообщений: 3
|
![]()
Всем привет!
Дорогие пользователи ресурса, помогите разобраться в обмене данными между dll и приложением на простом примере. Есть dll, содержащая форму. На форме, допустим, есть StringGrid1. Также есть главное приложение, в котором подключается dll. Как сделать следующее? 1) Передать параметры из приложения в dll-форму (чтобы, например, StringGrid1, постоянно обновляясь, принимал значения массива строк из главного приложения) 2) Передать параметры из dll-формы в приложение (чтобы при выделении ячейки StringGrid на форме - StringGrid1.OnSelectCell - главное приложение получало значение этой ячейки) Как это лучше и проще сделать? Читал, что можно объявлять процедуры/функции в public и юзать из других модулей, передавая нужные параметры, либо использовать мессаги. Пока dll-форма просто создается ![]() dll-форма Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
читайте про bpl
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 12.04.2013
Сообщений: 3
|
![]()
не уверен что bpl подойдет, главное приложение делается не в delphi (хотя синтаксис delphi )...
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Через сообщение можно передать 8 (максимум - 11) байт.
Правда, учитывая, что dll размещается в адресном пространстве процесса, это могут быть указатели, т.е. принципиально объем передаваемых данных не ограничен. Но как-то принято обмениваться данными с dll через процедуры и функции. И в чем прелесть dll - к ней можно обращаться из программы, написанной на любом языке. Разумеется, сама dll не должна содержать специфичных для конкретного языка типов данных. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 12.04.2013
Сообщений: 3
|
![]()
Пытаюсь осуществить обмен строками между DLL и приложением, строки из приложения в длл передаются нормально, а вот если наоборот - Access Violation. В чем может быть ошибка?
приложение: Код:
DLL: Код:
Последний раз редактировалось _DK; 13.04.2013 в 17:27. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
В Delphi нестандартный и ни с чем не совместимый тип строки.
Поэтому использовать его в dll нельзя (точнее, крайне не рекомендуется). Используйте для передачи C-строки, а в своей программе или dll преобразуйте к нужному виду. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обмен данными между программами | nestor_petrovitch | Общие вопросы Delphi | 3 | 05.02.2012 20:56 |
Требуется написать программу на Delphi 7 - Обмен данными между MySQL и Excel | yaskin | Фриланс | 9 | 08.11.2011 11:31 |
Обмен данными между DLL и программой | Шульц | Общие вопросы Delphi | 8 | 16.03.2010 22:34 |
Обмен данными между двумя формами в Delphi | NecroSlider | Помощь студентам | 2 | 30.07.2009 11:52 |
Обмен данными между С++ и С# | Stellvertreter | Общие вопросы C/C++ | 0 | 14.11.2008 14:18 |