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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 22:50   #1
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию Не могу понять ошибку

Всем добрый ночи. Сижу весь день, ни чего не получается. Я пытаюсь через DLL функцию создать в TWinControl панельку. Вот код:
Код:
procedure CreateWin(Parent: TWinControl; T,L: integer); stdcall;
 var p: TPanel;
begin
 p:= TPanel.Create(Parent);
 p.Parent:= parent;
 p.Width:= 100;
 p.Height:= 100;
 p.Top:= T;
 p.Left:= L;
end;
Чтение функции происходит нормально, а вот при выполнении данного кода выдает ошибку:
---------------------------
Workwin
---------------------------
Cannot assign a TFont to a TFont.
---------------------------
ОК
---------------------------
Пожалуйста помогите
alexprey вне форума Ответить с цитированием
Старый 25.05.2010, 23:37   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ну, я не профи в таких делах, но мне кажется создать компонент через DLL таким образом не возможно. Ведь на сколько мне известно у загруженой библиотеки свое адресное пространство. И когда вы передаете процедуре указатель на Parent библиотека его в своем адресном пространстве не находит.
Ну это типа если бы вы спросили меня: Где я живу? А я бы вам назвал улицу и дом, а город не сказал.
Sibedir вне форума Ответить с цитированием
Старый 25.05.2010, 23:43   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Ведь на сколько мне известно у загруженой библиотеки свое адресное пространство.
вам известно неверно.
вообще то скорее всего проблема в том что у ДЛЛ свой Application(модуль Forms)
вам нужно его брать из основного процесса.(не помню точно, сам обьект)
или чтото подобное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.05.2010, 23:53   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
вам известно неверно.
1000 извинений
Sibedir вне форума Ответить с цитированием
Старый 26.05.2010, 10:17   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Cannot assign a TFont to a TFont.

В DLL свой VCL (то бишь СВОЙ набор классов) DLL.TObject <>application.TObject

если очень нужно чтобы было равно то и application и DLL надо компилировать с runtime packege и в одной версии Delphi и таскать с собой кучу дополнительных файлов (*.bpl) (rtl vcl, ... ). Чем больше разных используемых компонент тем больше файлов.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 26.05.2010 в 10:20.
evg_m вне форума Ответить с цитированием
Старый 26.05.2010, 13:32   #6
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

А что если попробовать передать Application в DLL и с ним работать???
В таком случае будет работать?
alexprey вне форума Ответить с цитированием
Старый 26.05.2010, 13:35   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте, но врятли.
evg_m, прав.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.05.2010, 13:38   #8
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

И какие тогда есть способы решения этой проблемы?
alexprey вне форума Ответить с цитированием
Старый 26.05.2010, 13:45   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Cannot assign a TFont to a TFont.

В DLL свой VCL (то бишь СВОЙ набор классов) DLL.TObject <>application.TObject

если очень нужно чтобы было равно то и application и DLL надо компилировать с runtime packege и в одной версии Delphi и таскать с собой кучу дополнительных файлов (*.bpl) (rtl vcl, ... ). Чем больше разных используемых компонент тем больше файлов.
написали же вам вроде как
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.05.2010, 13:48   #10
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Я не понял как
alexprey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять ошибку Cobro Помощь студентам 0 08.05.2010 17:19
Не могу понять ошибку alex_alpha Общие вопросы C/C++ 5 23.03.2010 19:18
Не могу понять ошибку функции TextOut ArtiSoft Общие вопросы C/C++ 2 24.12.2009 16:29
Не могу понять ошибку. KoBRaAndrey Общие вопросы Delphi 2 18.11.2009 19:28
При выполнении программа отображает ошибку, в чем проблема понять не могу Hyjak Помощь студентам 7 20.10.2008 23:48