Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 276

/ вопрос открыт /

Здравствуйте!
У меня есть форма с RxGifAnimator. в него загружена гифка. Если я просто создаю и показываю эту форму - гифка бегает. Если помещаю форму в ДЛЛ и показываю оттуда - гифка стоит. в чем может быть дело?

AlexMPEI Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 11 мая 2011, 12:13
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 10; последнее сообщение — 11 мая 2011, 14:30; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 11 мая 2011, 12:28 [#1]:

потому что форма в длл.
Галочка "подтверждения прочтения" - вселенское зло.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 11 мая 2011, 12:35 [#2]:

эту связь я уже выявил. мне непонятно как влияет то что форма в длл на отображение гифки.
min@y™

min@y™ (статус: Доктор наук), 11 мая 2011, 13:07 [#3]:

Похоже, придётся писать письмо турецкому султану создателю этого компонента, если не можешь добраться отладчиком до нужного места в коде.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 11 мая 2011, 13:20 [#4]:

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


Зная, как приблизительно работает этот компонент, я могу предположить такое - он создает дополнительный тред или таймер, который посылает всем формам сообщение "обнови картинку на гифе" (можно было для каждой картинки создать - но это ведь извращение).
Но как этот тред узнает о списке форм приложения? он возьмет переменную screen (которая тоже должна быть одна на все приложение) и посмотрит список всех форм. А так как никто не рассчитывает, что у нас теперь этих объектов 2, то имеем что имеем.


Вывод - похакать то все это можно, но придется очень хорошо разобратся с vcl. Очень хорошо.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 11 мая 2011, 13:33 [#5]:

По 2 объекта Application и Screen (а также mouse, printer и т.п.) - это, как раз, не проблема: ссылки на них можно передать из exe в dll и временно присвоить, куда надо. А вот проблема с этим чёртовым компонентом была и у меня, только проявлялась по-другому. Лет эдак 100500 назад я тоже баловался формами в dll. Одна из них - окно "О программе", на которой этот гиф-аниматор крутил картинку-логотип. Но вот незадача - при закрытии этого окна примерно в 30-40% случев спонтанно всё приложение ЧПОК (!) и закрывалось без каких-либо сообщений об ошибках. После такой подставы эксперименты с формами я прекратил. Надеюсь, что навсегда.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
AlexMPEI

AlexMPEI (статус: 1-ый класс), 11 мая 2011, 13:47 [#6]:

самое интересное у меня сначала это все стабильно работало. только пришлось на форму положить таймер который раз в 200 мс делал Application.ProcessMessage; чтобы гиф бегал. потом RxLib начал ругаться на какие-то лицензии, не давал мне скомпилироваться с рантайм пакеджами, выдавая жуткие ошибки. В итоге сегодня я нашел другой RxLib 2.75 (до этого была версия 4....). С ним все ок, но вот эта проблема с небегающим гифом.
Вадим К

Вадим К (статус: Академик), 11 мая 2011, 14:00 [#7]:

А решается то все очень просто:)
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 11 мая 2011, 14:00 [#8]:

Ну попробуй скачать другой компонент для прокручивания анимированных гифов. Их, кроме TRxGifAnimator'a в енторнете полно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
AlexMPEI

AlexMPEI (статус: 1-ый класс), 11 мая 2011, 14:23 [#9]:

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

Вадим К (статус: Академик), 11 мая 2011, 14:30 [#10]:

Странно, что RxLib вообще просит какие то лицензии - это OpenSource проект. Сорцы свободны, их можно посмотреть и модифицировать. Да и нет версии 4 (последняя 2.77).
Исходя из этого делаю вывод, что "лицензии" запрашивались кем то другим:)
Почему начало работать с таймером? потому что Вы вручную вызываете обработку сообщений. А далеко не факт, что она будет работать правильно.

Еще раз напишу - код vcl построен так, что он не рассчитывает, что у Вас есть длл с формой! Поэтому то работает, то не работает.

Но если нужны формы в "длл", то используем bpl и все будет работать. (правда до тех пор, пока версия компилятора не поменяется).
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.03 сек.