Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1080945586
KyRo
2004-04-03 02:39
2004.04.18
Как узнать имена файлов ?


7-1076698012
Khabibulin
2004-02-13 21:46
2004.04.18
Display


9-1066817546
misterix
2003-10-22 14:12
2004.04.18
Исходник загрузки Half-Life mdl


1-1080627091
SisiusP
2004-03-30 10:11
2004.04.18
Прошу совета, как реализовать класс.


3-1079874978
VitGun
2004-03-21 16:16
2004.04.18
Грабли с фильтрацией





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский