Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странно работает TOpenDialog .. [D6, XP]


Страницы:   1 2

Drowsy ©   (2009-09-29 04:28:00) 

Есть несколько форм MainF, F1, F2.
На F2 помещён OpenDialog.
Из MainF вызывается F1.ShowModal;
Из F1 вызывается F2.ShowModal;
После выполнения OpenDialog.Execute c экрана исчезают все окна, кроме
F2. После закытия F2 появляется F1, после закрытия F1 появляется MainF.
Почему такое?


Drowsy   (2009-10-05 13:48:00) [1]

... + Watch List во время пошагового выполнения не редактируется.


Drowsy   (2009-10-05 13:01:00) [2]

Ещё фенька : если ошибка возникает вне библиотеки, то если её не обработать в программе, то выбрасывается сообщение об ошибке, в титле которого название библиотеки "C_Graph_DLL" !


Сергей М.   (2009-09-30 11:37:00) [3]


> Ухарь   (30.09.09 09:39) [35]


Раньше было принято внимательно читать порсты автора:


> Project Options -> runtime packages -> Build with runtime
> packages опция установлена и в проге и в библиотеке


Ухарь   (2009-09-30 09:39:00) [4]

помнится, раньше было принято в DLL передавать Application и Screen, и там их присваивать в соответствующие глоб. переменные.


Drowsy   (2009-09-29 13:31:00) [5]

Код DLL - больше десятка юнитов и ещё больше заголовков.
Может по почте?


Юрий Зотов   (2009-09-29 13:16:00) [6]

Нужен код DLL и формы, которая к ней обращается.


Drowsy   (2009-09-29 12:39:00) [7]

Может в DLL какие-то опции компиляции нужны особые?


Drowsy   (2009-09-29 12:20:00) [8]

В Dll, к сожалению.
Если исключить из проекта формы, которые обращаются к Dll, то всё в порядке.
А если, например, 5 форм, вызываемых последовательно F1->F2.ShowModal->F3.ShowModal->F4.ShowModal->F5.ShowModal, где 4-ре первые - "чистые", а 5-ая использует Dll, то начинаются эти проблемы (все иконки си-шные и на панели задач и OpenDialog ...).
Пробовал их и динамически создавать -тоже самое.

Я бы, нафиг, отказался от OpenDialog ("листы" бы задействовал), но хоть бы от иконок избавиться....


Юрий Зотов   (2009-09-29 12:06:00) [9]

> Drowsy   (29.09.09 11:58) [29]

Возможно, дело не в DLL. Попробуйте в программе закомментировать все обращения к DLL - проблемы останутся, или исчезнут?


Drowsy   (2009-09-29 11:58:00) [10]

Библиотека написана на С++ Builder.
Используется в Дельфи.
Всё, что от неё требуется, это получить строку с названием нестандартного графического файла и Handle канваса.
Она внутри себя расшифровывает файл, и на полученном канвасе отрисовывает.
Почему она при этом корёжит основную прогу (выбрасывает на панель задач иконку формы и OpenDialog после закрытия стирает  активные, видимые формы, кроме вызвавшей этот OpenDialog) ?


Drowsy   (2009-09-29 11:07:00) [11]

А о чём это говорит?
Может совет какой дадите?!


Сергей М.   (2009-09-29 11:04:00) [12]


> в Диспетчере задач формы как приложения появляются


И что ?
Это же вовсе не говорит о "запуске еще одной программы (процесса)" ..


Drowsy   (2009-09-29 10:48:00) [13]


> третьего не дано

Не дано - запускает (в Диспетчере задач формы как приложения появляются).
А как это исключить?


Сергей М.   (2009-09-29 10:36:00) [14]


> как - будто запускает ещё одну программу (процесс)


Что значит "как будто" ?
Либо запускает либо не запускает - третьего не дано)


Drowsy   (2009-09-29 10:33:00) [15]

Получается так, что если форма использует библиотеку, то её вызов (Show или ShowModal) как - будто запускает ещё одну программу (процесс)...


Сергей М.   (2009-09-29 09:00:00) [16]


> даже главного окна, которое ещё к библиотеке не обращается

Обращение к библиотеке, точнее ее загрузка и инициализация, у тебя происходит еще до тогокак рождается самое первое окно.


Drowsy   (2009-09-29 08:44:00) [17]

.... даже главного окна, которое ещё к библиотеке не обращается.


Drowsy   (2009-09-29 08:43:00) [18]

Тут ещё одна странность : прога на дельфи, а иконки всех окон, мало того, что все вываливаются на панель задач, так они ещё и СИШНЫЕ.


Drowsy   (2009-09-29 08:34:00) [19]


> 2. Я спрашивал про TFigures, а не TFigure.


Это у меня очепятка  класс один - TFigure

> 4. И самое главное: попробуйте сбилдить (не скомпилировать,
>  а именно сбилдить) и Exe, и Dll с run-time пакетами.


У меня Project Options -> runtime packages -> Build with runtime packages опция установлена и в проге и в библиотеке.
Перебилдил всё ещё раз - проблема осталась.


Юрий Зотов   (2009-09-29 08:09:00) [20]

1. Dll все равно чисто дельфишная, поэтому stdcall можно убрать (и в Exe, и в DLL). Хотя можно и не убирать - главное, чтобы и в Exe, и в DLL было одинаково.

2. Я спрашивал про TFigure s , а не TFigure.

3. Параметр метода - строка, надо использовать ShareMem.

4. И самое главное: попробуйте сбилдить (не скомпилировать, а именно сбилдить) и Exe, и Dll с run-time пакетами.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо