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

Вниз

Проблема при закрытии формы MDI из DLL   Найти похожие ветки 

 
Jakudza   (2007-04-10 13:11) [0]

Если во время закрытия основной MDIForm"ы была активна MDI форма вызванная из DLL ругается на "Acces violation at adress ...", если же была активна форма (MDI) не из Dll, то все закрывается нормально, в чем может быть проблема ?!

DLL
---------
procedure CreateFormIm1(App: TApplication; Scr: TScreen);stdcall;
begin
 DLLScr := Screen;
 Screen := TScreen(Scr);
 DLLApp := Application;
 Application := TApplication(App);
 TFormIm1.Create(Application);
end;

procedure CloseFormIm1;stdcall;
begin
 Screen := DLLScr;
 Application := DLLApp;
 FormIm1.Free;;
end;

exports CreateFormIm1, CloseFormIm1;

---------------
MDI_Form
---------------
procedure CreateFormIm1(Apl: TApplication; Scr: TScreen);stdcall; external "Pravila 21\Pravila_21.dll";
procedure CloseFormIm1;stdcall; external "Pravila 21\Pravila_21.dll";

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: integer;
begin
 with Form1 do
   for I := MDIChildCount-1 downto 0 do
     MDIChildren[I].Close;
CloseFormIm1;
end;


 
Сергей М. ©   (2007-04-10 13:14) [1]


> в чем может быть проблема ?


В том что одну и ту же форму ты пытаешься уничтожить дважды


 
Jakudza   (2007-04-10 14:21) [2]

Пробовал и без этого
with Form1 do
  for I := MDIChildCount-1 downto 0 do
    MDIChildren[I].Close;
тот же результат, остальные формы ведь закрывает нормально


 
Сергей М. ©   (2007-04-10 14:24) [3]

а начерта тебе вообще этот цикл ?


 
Jakudza   (2007-04-10 14:29) [4]

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


 
Сергей М. ©   (2007-04-10 14:32) [5]


> переходит с формы на формы, чтобы лишние формы не болтались,
>  закрываю


Бред какой-то..


 
Jakudza   (2007-04-10 14:37) [6]

Причем здесь бред, есть главная форма, с помощью меню выбираются разделы, каждому разделу в меню соответствует форма (MDI), часть этих форм вызывается из dll, и проблема не в цикле, потому что и без него всеравно выкидывает ошибку при закрытии.


 
Сергей М. ©   (2007-04-10 14:39) [7]

Ну тогда отладчик тебе в руки - и вперед, с песней.


 
Fredy314 ©   (2007-04-10 15:18) [8]

> procedure CloseFormIm1;stdcall;
> begin
> Screen := DLLScr;
> Application := DLLApp;
> FormIm1.Free;;
> end;

попробуй
procedure CloseFormIm1;stdcall;
begin
FormIm1.Free;;
Application := DLLApp;
Screen := DLLScr;
end;
разницу видишь?


 
Jakudza   (2007-04-10 15:33) [9]

не помогло


 
Сергей М. ©   (2007-04-10 15:39) [10]

Эт потому что ты код содрал.
Бездумно.

Вот скажи, зачем тебе stdcall ?
Почему, к примеру, не cdecl ?


 
Jakudza   (2007-04-10 16:19) [11]

С cdecl таже ситуация

Эт потому что ты код содрал.
Бездумно.


Зачем изобретать колесо, что нашел, то и использовал


 
Сергей М. ©   (2007-04-10 16:21) [12]


> что нашел, то и использовал
>


Малацца.
ПРодолжай в том же духе.
Думать своей головой ты не желаешь. как я понял.


 
DrPass ©   (2007-04-10 16:30) [13]


> в чем может быть проблема ?!

Например, в отсутствии ShareMem. Или, что более вероятно, в концепции. Уже миллион раз говорили - НЕ ПОМЕЩАЙТЕ ФОРМЫ В DLL, стабильной работы таких приложений добиться практически невозможно.


 
Fredy314 ©   (2007-04-10 16:44) [14]

> [9] Jakudza   (10.04.07 15:33)

Я и не говорил что будет работать.
смотри http://helpstudio.h1.ru/books/d4/d4_19/_dll_9.htm
Искать надо уметь.
только надо-ж понимать что копируешь.


 
Jakudza   (2007-04-11 09:43) [15]

Fredy314 ©   (10.04.07 16:44) [14]
Спасибо, помогло :)



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

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

Наверх




Память: 0.5 MB
Время: 0.038 c
2-1178989842
Gaara_of_the_Desert
2007-05-12 21:10
2007.06.03
Создание объектов на форме


15-1178195190
SkySpeed
2007-05-03 16:26
2007.06.03
Как выявить причину упадка грызуна и клавы?


1-1176217171
I-New
2007-04-10 18:59
2007.06.03
вывод TPopupMenu с Timage при нажатии на левую кнопку мыши


2-1179143595
IGray
2007-05-14 15:53
2007.06.03
Как сформировать файл письма в формате ЕML программно?


8-1159108278
_SuN_
2006-09-24 18:31
2007.06.03
Рисование на рабочем столе