Форум: "WinAPI";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.051 c