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

Вниз

Програмное закрытие формы из Dll   Найти похожие ветки 

 
206196131 ©   (2008-03-29 20:05) [0]

есть приложение оно подгружает dll
в dll  2 формы, загружается сразу форма1

после разных всяких проверок либо открывается форма2 либо не открыватся.

   в родительском окне    
   Application.CreateForm(Tform1,form1);    

в form1

if (что с чемто = 1) then
   Application.CreateForm(Tform2,form2)
else
   form1.close;

form1.close вылетает по access  violation at address 12345678 in module my.dll

при этом если закрываеть
  form1 крестиком то никаких  проблем....


 
Сергей М. ©   (2008-03-29 20:17) [1]


>    в родительском окне    


Что за зверь ?


 
206196131 ©   (2008-03-29 20:22) [2]

обычное fsMDIForm все остальные окна fsMDIChild


 
Сергей М. ©   (2008-03-29 20:28) [3]

Т.е. ты пытаешься в dll-коде закрыть форму, код которой находится в хост-проекте и которая там же и создается, так ?


 
206196131 ©   (2008-03-29 20:34) [4]

типа того если парваильно поняли друг друга,
и родиделской формы я выхываю форму1  из dll  в свою очередь
форму1  вызывает форму2 и дожна закрыться
но закрытие не получается


 
trubin ©   (2008-03-29 20:37) [5]


> типа того если парваильно поняли друг друга,
> и родиделской формы я выхываю форму1  из dll  в свою очередь
>
> форму1  вызывает форму2 и дожна закрыться
> но закрытие не получается


Пытался сосчитать орфографические ошибки и не смог - переполнение стека :)))


 
Сергей М. ©   (2008-03-29 20:37) [6]

Приложение и dll используют ран-тайм пакеты ?


 
206196131 ©   (2008-03-29 20:42) [7]


> Приложение и dll используют ран-тайм пакеты ?


что имеете виду под ран-тайм пакетами

  никаких пакетов я неиспользую если правильно понял


 
Сергей М. ©   (2008-03-29 20:43) [8]


> что имеете виду под ран-тайм пакетами


В оциях сборки в свойствах проекта крыжик "Build with run-time packages" я имею ввиду


 
206196131 ©   (2008-03-29 20:44) [9]

trubin  ты бы по делу чемто помог когда стек освободишь ))


 
206196131 ©   (2008-03-29 20:45) [10]

сейчас посмотрю, специально я туда на лазил


 
Сергей М. ©   (2008-03-29 20:46) [11]


> 206196131 ©   (29.03.08 20:44) [9]


Формы в dll - блажь вообще.
Для озабоченных этим придуманы bpl.


 
206196131 ©   (2008-03-29 20:46) [12]

нет его там, как по умолчанию было так и осталось


 
Сергей М. ©   (2008-03-29 20:47) [13]


> специально я туда на лазил


Зачем же ты полез со своими формами в dll, если не в курсе крайне важных при этом вещей ?


 
206196131 ©   (2008-03-29 20:48) [14]

это отдельный разговор Формы в dll ))


 
Сергей М. ©   (2008-03-29 20:48) [15]


> нет его там


Плохо.


 
206196131 ©   (2008-03-29 20:51) [16]

полез из соображени  таких
 в случае каких либо изменений в модуле просто менять  dll  файл
при этом не трогать основной проект

(чуствую сейчас опять начнется война идиологии)


 
Сергей М. ©   (2008-03-29 20:51) [17]


> это отдельный разговор Формы в dll


Ты не оригинален.
До тебя в форуме уже туева туча кулибиных пыталась на полном серьезе доказать серьезность этого отдельного разговора)
И, смею заметить, все они получали одними и теми же граблями по своим кулибинским лбам)


 
Германн ©   (2008-03-29 20:55) [18]


> война идиологии

Забавная очепятка.


 
Сергей М. ©   (2008-03-29 20:55) [19]


> в случае каких либо изменений в модуле просто менять  dll
>  файл


На здоровье, я не против)

Но нужно четкое, а не поверхностное понимание работы внутренних механизмов Делфи.


 
206196131 ©   (2008-03-29 20:57) [20]

и не сомниваюсь ))
 но по сути дела есть какие нить предложения, или нет


 
206196131 ©   (2008-03-29 20:59) [21]

Германн вам бы на каком нить irc  канале сидеть трафик гонять  ))


 
Palladin ©   (2008-03-29 21:00) [22]

ага... bpl создавать, а не dll. и эффект тот же и все работает.


 
206196131 ©   (2008-03-29 21:05) [23]

мужики причем здесь bpl

есть конкретная проблема, программное закрытие формы загруженной из  dll
сама себя форма должна закрыть


и неуместны тут ни  blp ни соm


 
Сергей М. ©   (2008-03-29 21:08) [24]


> есть конкретная проблема


Эта "проблема" может зависеть от множества факторов !


> неуместны тут ни  blp ни соm


Вот com точно не уместен, а bpl оч даже уместен)


 
206196131 ©   (2008-03-29 21:11) [25]

странно то что по крестику форма нормально зарывается ни начто не материться


 
Сергей М. ©   (2008-03-29 21:14) [26]

Странно другое - неумение или нежелание пользоваться отладчиком.


 
206196131 ©   (2008-03-29 21:22) [27]

если бы все все умели, половино человечества сидело бы без работы))


 
Loginov Dmitry ©   (2008-03-29 21:49) [28]

> обычное fsMDIForm все остальные окна fsMDIChild


> Application.CreateForm(Tform2,form2)


Это дочернее окно так создается, или что?


> form1.close вылетает по access  violation at address 12345678
> in module my.dll
>
> при этом если закрываеть
>  form1 крестиком то никаких  проблем....


Вот и отлаживай! F7 и F8 рулят! Если не в состоянии, то укажи более ЧЕТКО, в чем проблема? И прислушайся к совету насчет пакетов. Это избавляет от колоссальной доли геморроя, поверь...


 
206196131 ©   (2008-03-29 22:06) [29]

Application.CreateForm(Tform2,form2)
на последнии момент было так, есть другие предложения


 
206196131 ©   (2008-03-29 22:13) [30]

var
form2:Tform2;
begin
form2:=  Tform2.Create(application);
form2.show;
form1.Close;//слетат тут
end;

так ничего не меняется


 
Loginov Dmitry ©   (2008-03-29 22:15) [31]

> Application.CreateForm(Tform2,form2)
> на последнии момент было так, есть другие предложения


Дочерние окна fsMDIChild обычно создают следующим образом:
Tform2.Create(Owner);
и никаких переменных типа form2 не используют. Можно конечно использовать, но только если будет создана всего одна форма Tform2.


 
Loginov Dmitry ©   (2008-03-29 22:19) [32]

> var
> form2:Tform2;
> begin
> form2:=  Tform2.Create(application);
> form2.show;
> form1.Close;//слетат тут
> end;
>
> так ничего не меняется


что такое TForm1? Где данный объект создается (в EXE или DLL)?
где создается TForm2?
Что у тебя должно происходить при вызове form1.Close?


 
206196131 ©   (2008-03-29 22:28) [33]

обе формы из  dll  

ничего не должно происходить, должна зарыться форма form1

после того как отыкрыта  form2


 
Palladin ©   (2008-03-29 22:37) [34]

вот незадача... application в dll и в хост приложении разный бааалин... сколько можно твердить сохдавай bpl, там application одинаковый. и да будет тебе известно что bpl никакого, ну ни малейшего абсолютно, отношения к com не имеет. эта та же самая dll. просто грузится специальными средствами, благодара которым например TForm из bpl тот же самый класс что и Tform в хлст приложении. и еще много вкусностей о которых довольно подробно описано в справке.


 
206196131 ©   (2008-03-29 22:38) [35]

руками form1 закрывается без проблем
а по form1.Close нет


 
Loginov Dmitry ©   (2008-03-29 22:38) [36]

1. приведи код инициализации dll-ки.
2. попробуй переименовать в инспекторе объектов форму Form1 во что-нибудь другое (например Form3)


 
Loginov Dmitry ©   (2008-03-29 22:40) [37]

> вот незадача... application в dll и в хост приложении разный
> бааалин... сколько можно твердить сохдавай bpl, там application
> одинаковый. и да будет тебе известно что bpl никакого, ну
> ни малейшего абсолютно, отношения к com не имеет. эта та
> же самая dll. просто грузится специальными средствами, благодара
> которым например TForm из bpl тот же самый класс что и Tform
> в хлст приложении. и еще много вкусностей о которых довольно
> подробно описано в справке.


зачем bpl создавать? Куда проще поставить заветную галочку в опциях обоих проектов!


 
206196131 ©   (2008-03-29 22:46) [38]

)) уже что то, здесь и сейчас это както решаемо ?

 или все переписывать


 
Loginov Dmitry ©   (2008-03-29 22:48) [39]

> )) уже что то, здесь и сейчас это както решаемо ?


Тебе решать!


 
206196131 ©   (2008-03-29 22:57) [40]

Palladin то что bpl и ком ничего общего не имеют это факт
но визуально, то я хоч у в итоге получить можно сделать на 4 способами  (com,bpl, dll, И все в одном) )) насколько я знаю...

На тему bpl убедили окончательно но всёже поскажите как
раз и навсегда как закрыть это злополучное окно )) в случае в  dll



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

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

Наверх




Память: 0.56 MB
Время: 0.018 c
11-1188050116
Andrey_rus
2007-08-25 17:55
2008.04.27
TKOLRichEdit & RE_InsertRTF


3-1196328581
ari_9
2007-11-29 12:29
2008.04.27
хранение пользовательских настроек программы в БД. идеология


15-1203519350
Marser
2008-02-20 17:55
2008.04.27
USB Flash-based дистрибутив Linux


11-1188218102
Compiler
2007-08-27 16:35
2008.04.27
KOLMHXPStyle


2-1206943796
Kolan
2008-03-31 10:09
2008.04.27
Что значит константа 7 в WMDEVICECHANGE?