Главная страница
    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.031 c
7-1076567338
gid
2004-02-12 09:28
2004.04.18
Как определить загруженность процессора в Win XP ?


11-1062831013
dictator
2003-09-06 10:50
2004.04.18
Как реагировать на 2-е колесо мыши?


14-1080097484
Думкин
2004-03-24 06:04
2004.04.18
С днем рождения! 24 марта.


14-1079961432
RealRascal
2004-03-22 16:17
2004.04.18
Задача по физике - Давление в желудке у котенка


1-1080835148
Leon
2004-04-01 19:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский