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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2010, 03:11   #1
Bulbo
Новичок
Джуниор
 
Регистрация: 27.03.2010
Сообщений: 2
Сообщение Компоненты в DLL

Перерыл Google, форумы и т.д.

Проблема в создании компонентов из DLL.

Создаю форму из длл примерно так:

PHP код:
function CreateTheFormPointer;
begin
 Result 
:= TForm1.Create(nil);
end;

function 
ShowTheForm(PPointer): Boolean;
const
  
mrOK 1;
begin

  Result 
:= TForm1(P).ShowModal mrOK;
end;

 
ShowTheForm(CreateTheForm); 

Вроде все тип топ "Создалась, проявилась"...

создаю компонент где то так:

PHP код:

CoInitializeEx
(nil,COINIT_APARTMENTTHREADED);
RdpDoc.Rdp:= TMsRdpClient3.Create(Form1);
RdpDoc.Rdp.Parent:=  Form1;
RdpDoc.Rdp.Left:=10;
RdpDoc.Rdp.Top:=10;
RdpDoc.Rdp.Visible:=True;
RdpDoc.Rdp.Tag:=0;
RdpDoc.Rdp.Server:='192.168.1.1';
RdpDoc.rdp.UserName:='111';
RdpDoc.rdp.AdvancedSettings4.Set_ClearTextPassword('111');
RdpDoc.rdp.Connect

в ЕХЕ все отлично а вот в длл как то не получилось.... (Форма виснет при создание RDP компонента).

Если в длл вызвать форму так:

PHP код:
Application.Initialize;
  
Application.CreateForm(TForm1Form1);
  
Application.Run
то компонент RDP создаеться но при попытки вызова функции Connect виснет аналогочно первому варианту.

Перечитал все, видел такую же проблему и с TWebBrowser...

По теме нашел: http://www.sql.ru/forum/actualthread.aspx?tid=106803

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


Задача: Адекватно работать с компонентами из DLL. Накидайте ссылок, может кто то тоже сталкивался с этим. Заранее спасибо.

Последний раз редактировалось Bulbo; 27.03.2010 в 03:14.
Bulbo вне форума Ответить с цитированием
Старый 27.03.2010, 08:15   #2
Яр|/||< (^_^)
LosYear
Форумчанин
 
Аватар для Яр|/||< (^_^)
 
Регистрация: 19.06.2009
Сообщений: 695
По умолчанию

А просто File-New-Form незя???
Яр|/||< (^_^) вне форума Ответить с цитированием
Старый 27.03.2010, 13:03   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Адекватно работать с компонентами из dll не выйдет, т.к. exe и dll - 2 абсолютно независимых приложения и каждое содержит свою таблицу методов и т.п. Попытка наследования классом в библиотеке класса в приложении ни к чему хорошему не приведёт, для этих целей борланд когда-то придумал свой 'формат' - bpl.
пыщь
JTG вне форума Ответить с цитированием
Старый 27.03.2010, 14:24   #4
MMM_Corp
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 17
По умолчанию

Всю визуальную часть держите в екзешке, всю не визуальную можно вынести в ДЛЛ-ку, но я бы лично этого не рекомендовал делать вообще, так как с ДЛЛ-ками ой как надо помучатся. Все в 1 екзеху пихайте да и всьо.
MMM_Corp вне форума Ответить с цитированием
Старый 27.03.2010, 16:15   #5
Bulbo
Новичок
Джуниор
 
Регистрация: 27.03.2010
Сообщений: 2
Радость

Парам пам пам...... В Общем я понял, мы все не понимаем не чего в этой теме, по этой причине предлагаю развить данную тему и вывести для большинства пользователей истину данного события в области программирования.

Значит задача использовать TWebBrowser из DLL.

Предлагаю всем адекватным и понимающим людям мне помочь именно в развитии этой темы и написания кода. Давайте доведем тему до ее финального завершения полностью поняв корень проблемы а так же варианты решения этой задачи.

Сам думаю:

Подключиться к Interace IWebBrowser ну вот тут возникают вопросы.

Ну и хотелось бы увидить ответы на эти вопросы в коде.

1. Как я понимаю Компонент из себя представляет наследника какого там WinControl прицепленного к интерфейсу IWebBrowser, фактически сама графическая часть компонета требует больших привязок к форме и т.д. для визуализации компонента. Вопрос возможно использовать iInterface (того же WebBrowser) без наследования TComponent и т.д. в скрытом виде.

2. Вопрос про Interface как я понимаю это канал связи между COM то есть описание возможных функции, то есть фактически сам код Компонента храница в длл и мы используем только ее функции.

И так вот, я так полагаю что форум открыт для того что бы люди в нем развивались, помогали друг другу, это поможет и другим людям каторые столкнуться с аналогичными проблемами... к чему я это, обошел я много форумов и в большинстве люди пишут почитай "Рихтера" и т.д. вот именно из за таких людей прогресс стоит.... НУ ЛЮДИ ЕСЛИ БЫ я хотел почитать "Рихтера" я бы наверно не пошел на форум и не начал писать "люди помоги покажите пример" именно для этого я считаю нужны форумы иначи их смысл уже уходит в сторону рекламы товарища "Рихтера".

Давайте детально в коде разберем проблему interface и работу с ними из Консольных приложении или DLL. Для этого предлагаю создать простейщую программу такого вида:

Консольное приложение или DLL.
Создание IWebbrowser.
Навигация IWebbrowser на URL.
Обработка события onDownloadComplite.



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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[DLL] Загрузка и выгрузка dll в/из чужого процесса Человек_Борща Win Api 4 28.02.2010 17:47
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку kapustin Общие вопросы .NET 10 23.09.2009 22:20
Компоненты artemavd Общие вопросы Delphi 2 13.11.2008 23:57
Компоненты! Altera Компоненты Delphi 2 07.03.2008 15:22