![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Есть PROJECT.PAS который содержит Form1 и прицепляет DLL. В DLL-файле нужно произвести создание на Form1 некоего графического элемента (например, Label и Button). При попытке компилировать DLL файл пишет, что Unknown identifier Form1. Что нужно добавить в код чтобы это исправить?
Текст Project.PAS: Код:
... var Form1: TForm1; implementation {$R *.dfm} procedure Starter(); stdcall; external 'initial.dll'; procedure TForm1.FormCreate(Sender: TObject); begin Starter; end; end. Текст DLL-файла: Код:
library initial; uses SysUtils, Classes, Dialogs, StdCtrls; {$R *.res} procedure Starter(); stdcall; var label_tmp : TLabel; begin ShowMessage('dll'); label_tmp := TLabel.Create(nil); label_tmp.parent := Form1; label_tmp.Visible := True; label_tmp.Left := 100; label_tmp.Top := 100; label_tmp.Transparent := True; label_tmp.Caption := 'text'; end; exports Starter; begin end. Последний раз редактировалось smart_man, 08.07.2009 в 18:23. |
#2
|
||||
|
||||
![]() А откуда он знает про этот Form1? Попробуй форму через параметр передавать...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
![]() Сама идея понятна. Проблема в том как это выразить в коде =)
Может ошибочна сама идея пытаться делать TLabel.Create из DLL... Последний раз редактировалось smart_man, 08.07.2009 в 18:50. |
#4
|
||||
|
||||
![]() В dll:
Код:
//procedure Starter(); stdcall; procedure Starter(var Form1: TForm); stdcall; Код:
//procedure Starter(); procedure Starter(var Form1: TForm); stdcall; external 'initial.dll'; //Starter(); Starter(Form1); Не забудь в dll добавить в uses модуть Forms С тебя +++ Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
||||
|
||||
![]() И, вдгонку, жёсткое подключение к dll лучше заменить на LoadLibrary, так правильнее, и проверку можно норм оформить...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#6
|
|||
|
|||
![]() Так не получается. Несоответствие между:
Код:
var Form1: TForm1; и Код:
Starter(var Form1: TForm); Возможно тут надо как-то указатель использовать... Последний раз редактировалось smart_man, 08.07.2009 в 19:24. |