Текущий архив: 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