Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

DLL   Найти похожие ветки 

 
BALU1111 ©   (2004-02-11 12:37) [0]

Помогите плиз, может я что-то неправильно делаю, но вопрос такой. Создал DLL, на ней форма, показывается модально процедурой Show, экспортирую ее. В главном приложении подключаю эту DLL, импортирую процедуру. При нажатии кнопки на форме, должна появиться форма из DLL:
procedure button1click(??);
begin
Show(self).
end;
На ошибку в название процедуры нажатия кнопки прошу не обращать внимания, пишу по памяти.
Так при компиляции программы, останавливается на строке Show(self) и пишет ошибку Too many parametres  Что делать?


 
Digitman ©   (2004-02-11 12:41) [1]


> Что делать?


приводить декларацию процедуры "Show" в DLL и в хост-приложении в полное и точное соответствие (единое число и тип параметров, единое соглашение о вызове и т.д. и т.п.)


 
Digitman ©   (2004-02-11 12:45) [2]

кр.того формат вызова процедуры и ее прототип в вызывающем коде должны совпадать

если

type
TShowForm = procedure; //нет параметров !
var
Show: TShowForm;

то какого ж шута ты пишешь
Show(какой-то там непонятного назначения параметр а-ля Self)

?


 
BALU1111 ©   (2004-02-11 13:02) [3]

implementation
procedure
show(AOwner: TComponent);
external "xxx.dll";

А всю эту процедуру один в один списал с книжки, там-то и был указан параметр а-ля Self.


 
BiN ©   (2004-02-11 13:05) [4]

сожги ее


 
AKul ©   (2004-02-11 13:07) [5]


> BALU1111 ©   (11.02.04 13:02) [3]

Используйте:

Unit1.Show(Self);

Где Unit1 - имя модуля, в котором объявлена Show (Даже если в этом же самом).


 
BALU1111 ©   (2004-02-11 13:13) [6]

> BiN ©   (11.02.04 13:05) [4]

Да вот иногда наступают такие моменты, но в ней есть много чего интересного.

А может есть где примерчик?


 
Digitman ©   (2004-02-11 13:18) [7]


> BALU1111 ©   (11.02.04 13:02) [3]


плохая книга, если в ней нет ни слова о том, что имена собственных идентификаторов должны выбираться таким образом, чтобы они по возможности не совпадали с идентификаторами в составе других программных единиц, дабы сразу исключить неоднозначность и не зарабатывать потом себе геморрой с разрешением неоднозначности имен


 
Digitman ©   (2004-02-11 13:23) [8]


> всю эту процедуру один в один списал с книжки


когда сдуваешь с книжки. нужно все же хоть чуть чуть мозгами шевелить

у твоей формы в хост-приложении есть метод Show (без параметров), не думаю что ты о нем не слыхал

так почему бы сразу не объявить, к примеру :

procedure ShowMyTestForm(AOwner: TComponent); external "xxx.dll" name "Show";

?

навряд ли где-то в VCL и/или программе твоей найдется (хотя бы в области видимости по умолчанию) еще один идентификатор "ShowMyTestForm"


 
BiN ©   (2004-02-11 13:30) [9]

>BALU1111 ©
Рекомендую не использовть в качестве параметра TComponent, реализация которого может измениться в след. версии Дельфи, что может привести к AV. Постарайся обойтись хэндлами окон


 
BALU1111 ©   (2004-02-11 13:44) [10]

> Digitman ©   (11.02.04 13:23) [8]
На самом деле мозгами шевелю, если бы не шевелил у меня бы вообще ничего не получалось бы. Метод такой сдувать все с книжки, а потом разбираться как все работает при условии выполнения.



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-1080312679
jeka_t
2004-03-26 17:51
2004.04.18
Rave отчеты


3-1079613339
lesha y
2004-03-18 15:35
2004.04.18
<b> Помогите разобраться с InstallShield Express <b>


14-1080284981
Hamilkar
2004-03-26 10:09
2004.04.18
Длинее...


1-1080570739
Pikachu
2004-03-29 18:32
2004.04.18
Оброботка сообщения WM_MouseMove


14-1079937522
Real
2004-03-22 09:38
2004.04.18
1 апреля - НА НОСУ!