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

Вниз

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

 
snake1977   (2004-01-15 17:16) [0]

Здравствйте! поскажите почему вываливается ошибка при выгрузке DLL.
После загрузки DLL вызывается из нее процедура

Procedure Start(App:TApplication; Frm:TForm); export; StdCall;
Begin
SaveApp:=Application;
InitApp:=App;
Application:=App;
PrForm:=TPrForm.Create(Application);
PrForm.Show;
Application:=SaveApp;
End;

перед выгрузкой DLL вызывается процедура
Procedure Stop; export; StdCall;
Begin
Application:=InitApp;
PrForm.Close;
Application:=SaveApp;
end;

В основной программе , после выполнения следующих строк, выдается ошиба типа Acces violation
....
@Proc:=GetProcAddress(Handle1, "Stop");
try
if @proc<>nil Then Proc;
except
end;
FreeLibrary(Handle1);
end;


 
vl_chel ©   (2004-01-17 13:30) [1]

Вполне естественно!!
НЕЛЬЗЯ копировать ссылку на объект Application, подменять можно только Application.Handle.

var
SaveApp : THandle;

Procedure Start(App:THandle; Frm:TForm); export; StdCall;
Begin
SaveApp:=Application.Handle;
Application.Handle :=App;
Application:=App;
PrForm:=TPrForm.Create(Application);
PrForm.Show;
End;

Procedure Stop; export; StdCall;
Begin
PrForm.Close;
Application.Handle :=SaveApp;
end;



непонятно значение параметра Frm:TForm
может его надо описывать с var и в конце процедуры Frm := PrForm;



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

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

Наверх




Память: 0.46 MB
Время: 0.011 c
1-93461
Igor Bykov
2004-01-15 12:41
2004.01.29
textfile


8-93591
ARTEMKA
2003-09-23 12:06
2004.01.29
Как написать свой MediaPlayer


1-93442
Марат
2004-01-16 13:20
2004.01.29
CheckListBox


6-93616
Dmitry The Wing
2003-11-24 10:44
2004.01.29
Как соединить модемом две машины? (дозвон, прием звонка)


1-93504
Кен
2004-01-16 02:34
2004.01.29
Чем лучше запаковать программу, чтобы враги не распаковали ?