Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TMemo в DLL [D7, XP]


Страницы:   1 2

Novik ©   (2006-11-28 10:38:00) 

Как мне сделать DLL, при вызове,в которой срабатывала бы функция создающая (к примеру) Memo на основной форме приложения (Как написать DLL и как вызывать я разобрался)

В эту функция однозначно что-то надо передавать: хендл формы или указатель на неё. Так вот что именно надо передавать и как это потом использовать не знаю .... поделитесь советом плз ... люди добрые! :)


clickmaker   (2006-11-29 11:58:00) [1]


> [37] Сергей М. ©   (29.11.06 11:56)

ну так "на то в реке и щука, чтоб карась не дремал" )


Сергей М.   (2006-11-29 11:56:00) [2]


> передавать в DLL не указатели на классы, а хэндлы окон


Здесь ждет засада : хост-приложение вправе передать хэндл "чужого" окна или же своего, но созданного в ином код.потоке, нежели поток в котором вызвана dll-функция, призванная создать окно


Novik   (2006-11-29 11:56:00) [3]

ну есть у меня такая идея - передавать хендл. но чем CreateParented отличается от простого Create ?


clickmaker   (2006-11-29 11:52:00) [4]

еще один путь к универсальности - передавать в DLL не указатели на классы, а хэндлы окон, HWND
Тогда дельфовое приложение может сделать CreateParented, ну а сишное, к примеру просто CreateWindow


Novik   (2006-11-29 11:43:00) [5]

спасибо. получил исчерпывающие ответ ....


Gydvin   (2006-11-29 10:28:00) [6]


> это как ?

Shift+delete.

А если в dll реализовывать не компоненты, а скажем модули целиком. Потом передовать в длл значения для обработки, обрабатывать уже на форме из длл, и возвращать обратно в основную программу. Это как подключаемые модули в фотошопе.


Anatoly Podgoretsky   (2006-11-29 10:25:00) [7]

> Novik  (29.11.2006 10:15:31)  [31]

> это как

А это точно также как с длл, OldDll=NewDll, OldExe=NewExe
Но никакого DLL ада


Сергей М.   (2006-11-29 10:15:00) [8]


> Novik   (29.11.06 10:11) [28]



> к чему мы можем придти ?


К тому что конкретно поставленная тобой задача реализуема лишь при разработке взаимодействующих модулей не иначе как в Делфи/ВСВ. Ты в этом убедился.

Как только вместо Делфи (или ВСВ) начинает фигурировать любая иная среда, решение задачи теряет всякий смысл, не говоря уже о ее решаемости в том или ином хотя бы ограниченном виде


Novik   (2006-11-29 10:15:00) [9]

>> А удалить exe религия не позволяет?

это как ?


Anatoly Podgoretsky   (2006-11-29 10:13:00) [10]

> Novik  (29.11.2006 10:08:26)  [26]

Надоело, решил потрахаться, заодно пусть и пользователи помучаются.
А удалить exe религия не позволяет?


Novik   (2006-11-29 10:11:00) [11]

так, если объединить все разговоры выше, к чему мы можем придти ???? как начинать "стройку", какой фундамент "ложить"???


Сергей М.   (2006-11-29 10:10:00) [12]


> передает ей что-то


В твоем случае - это "что-то" должно быть указателем на объект класса TForm.
Но никто кроме Делфи и ВСВ об этом классе ничего не знает.


Novik   (2006-11-29 10:08:00) [13]

просто сколько я не делал приложения, всегда приходилось вносить в него коррективы (по надобности, со временем). надоело мне постоянно перекомпилировать всё это добро, вот я и решил организовать работу программы за счет подключаемых модулей. Удобно: надобность в одной функции программы отпала - удали ДЛЛ, надо что-то новое, напиши ДЛЛ и кинь в папку


Сергей М.   (2006-11-29 10:07:00) [14]


> тогда как мне реализовать хост приложение?


Вот так как ты его сейчас реализовал, так и реализуй - ведь работает же ! А лучшее, как известно, - враг хорошего)..


> Для меня самое главное взаимодействие данных DLL между собой
> и хост приложением


До тех пор, пока речь идет об одинаковых средах разработки взаимодействующих модулей, нет никаких проблем  в достижении этой цели. И ты в этом убедился.

представь себе, что твоя "стандартная" DLL-функция объявлена так:

function CreateMemo(ParentForm: TForm): Boolean;

Что сишное хост-приложение будет делать с этой ф-цией ? Оно же понятия не имеет, что такое TForm ! Равно как не имеет понятия о Делфи-классах вообще !


Anatoly Podgoretsky   (2006-11-29 10:06:00) [15]

> Novik  (29.11.2006 09:59:19)  [19]

Указатели на что, не говори загадками.
Но вижу у тебя большое желание походить по граблям, тем более не понимая, что это грабли.
Барабан на шею, палочки в руки и вперед.


Anatoly Podgoretsky   (2006-11-29 10:04:00) [16]

> Сергей М.  (29.11.2006 09:56:17)  [17]

Что другая программа будет делать с С++ классом?


Anatoly Podgoretsky   (2006-11-29 10:04:00) [17]

> Novik  (29.11.2006 09:53:15)  [15]

Можно, только зачем для этого ДЛЛ
Чтобы потрахаться?


Anatoly Podgoretsky   (2006-11-29 10:03:00) [18]

> Novik  (29.11.2006 09:48:13)  [13]

Для запуска программы никаких предустановленных библиотек  (VCL)  не требуется
Требования простые чистый Си


Anatoly Podgoretsky   (2006-11-29 10:02:00) [19]

> Novik  (29.11.2006 09:46:12)  [12]

А очень просто, не использовать ничего кроме Pure C для передачи данных туда и обратно, а если еще и для Фортрана, то вообще ничего кроме указателей.


Novik   (2006-11-29 09:59:00) [20]

>>Что С++-программа будет делать с Делфи-классом ?
>>Это же совершенно разные среды программирования ...

согласен, но ведь можно реализовать дельфи класс внутри DLL (описать его и т.д.) а основному приложению пофиг - она вызывает функцию, к примеру, InitDLL передает ей что-то, та сама всё делает и передает одратно что-то (это что-то я собирался реализовывать через указатели)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо