![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компонент в DLL
Мрась © (2006-06-07 13:20:00)Подскажите как поместить на форму компонент, описанный в dll.
Раньше код выглядел примерно так:
type
IMyInterface = interface
...
end;
TMyObject = class(T..., IMyInterface)
...
end;
var
MyObject: IMyInterface
в теле программы делал так:
MyObject:= TMyObject.Create(...);
и всё было ок
затем решил подгружать MyObject из DLL функцией
function LaodMyObject(Owner: TComponent): IMyObject; external 'my.dll';
и весь код, связанный с TMyObject перенёс в DLL
программа начала косячить в тех местах, где обращается к MyObject.
пошаговая отладка показала, что при создании компонента из dll конструктор TMyObject.Create игнорируется, обрабатывается конструктор родителя.
подскажите plz в чём проблема
Мрась (2006-06-07 15:04:00) [1]УЖОС!
я нашёл ошибку... я конструктор засунул в секцию private
извиняюсь очень
P.S. теперь ошибка в чём-то другом ))
tesseract (2006-06-07 15:04:00) [2]у DLL много точек входа.
У неё отстуствуют глобальные переменные. Переменные, в том числе и твоей формы будут доступны только до тех пор пока не вернёться функция.
те там окно about показать можно, но создавать и разрушать его можно только внутри функции.
Если хочешь чтобы даннеы сохранялись, опубликуй фрейм в ActiveX. Мастер в Delphi есть.
Мрась (2006-06-07 14:44:00) [3]это ответ или способ уйти от ответа?
если ответ, то нельзя ли поподробнее
tesseract (2006-06-07 14:20:00) [4]Тут много по формам в dll, не работают!.
Ну что нельзя через ISpecifyPropertyPage или ActiveX форму использовать?