Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» RxLib. RxGifAnimator крэшит приложение

Автор: ziesto
Дата сообщения: 11.03.2015 12:50
Подскажите, никто не сталкивался с подобным. Когда делаю какие-то ресурсоемкие операция и вывожу формочку на которой в RxGifAnimator бегает прогрессбар. В RxGifAnimator включен параметр асинхронного вывода изображения, чтобы анимация бегала, пока в VCL выполняется код.

Так вот с стабильной регулярностью в какой-то момент компонент выбивает access violetion и крэшит приложение.

Никто с таким не сталкивался или подскажите норм. версию RxLib для XE7
Автор: landy
Дата сообщения: 11.03.2015 18:48
Вероятнее всего, там где-то внутри вызов Synchronize потерян.

Попробуй эту сборку, тут заявлена поддержка XE7
Автор: ziesto
Дата сообщения: 12.03.2015 13:19
именно ее и пользую
Автор: landy
Дата сообщения: 12.03.2015 14:44
Тогда переходи на JVCL - код rx теперь там, но, возможно, компоненты уже под другими именами. Есть автоматический конвертер. Статья
Автор: ziesto
Дата сообщения: 12.03.2015 19:27
На JVCL пару лет назад был такой же прикол, может что-то поменялось, в любом случае спасибо, буду пробовать.
Автор: NeoAnomaly
Дата сообщения: 21.03.2015 18:03
ziesto, а почему бы не воспользоваться стандартными средствами delphi? TGifImage.
Там отрисовка по таймеру, т.е. на сколько я понял, у тебя ресурсоёмкая операция в главном потоке выполняется, вызывай периодически ProcessMessages и всё должно работать )
Автор: reenoip
Дата сообщения: 21.03.2015 20:06
ziesto, анимация в отдельном потоке?
Автор: NeoAnomaly
Дата сообщения: 21.03.2015 20:39

Цитата:
ziesto, анимация в отдельном потоке?

reenoip судя по сообщению landy

Цитата:
Вероятнее всего, там где-то внутри вызов Synchronize потерян.

Таймер фреймов построен на потоке, но как-то слабо верится, что можно было один Synchronize потерять... В любом случае надо код ревью делать или дебажить ) А в идеале реализовывать ресурсоёмкие операции в отдельном потоке, а не в главном.
Автор: reenoip
Дата сообщения: 23.03.2015 16:53

Цитата:
судя по сообщению landy

Так ведь не landy является автором вопроса
Автор: NeoAnomaly
Дата сообщения: 23.03.2015 16:58
2reenoip,

Цитата:
В RxGifAnimator включен параметр асинхронного вывода изображения, чтобы анимация бегала, пока в VCL выполняется код.  

Автор: reenoip
Дата сообщения: 26.03.2015 11:47
NeoAnomaly, пока я гуглю - можешь популярно объяснить, в чём связь между "потоком" и "асинхронным выводом изображения"? В смысле, на каком курсе универа им приписывают взаимоисключающую друг друга связь? А то, может, я на самом деле пропустил чего...

Добавлено:
Хотя, самому автору ответ, видимо, уже до п***ы
Автор: NeoAnomaly
Дата сообщения: 26.03.2015 12:12

Цитата:
NeoAnomaly, пока я гуглю - можешь популярно объяснить, в чём связь между "потоком" и "асинхронным выводом изображения"? В смысле, на каком курсе универа им приписывают взаимоисключающую друг друга связь?

reenoip, так никто и не говорит об исключении, я же наоборот говорю, что в рамках представленного компонента асинхронный вывод изображения реализован через таймер на потоке. Если я конечно правильно понял твой вопрос
Автор: landy
Дата сообщения: 26.03.2015 17:46

Цитата:
можешь популярно объяснить, в чём связь между "потоком" и "асинхронным выводом изображения"? В смысле, на каком курсе универа им приписывают взаимоисключающую друг друга связь?

Если поток строит и выводит изображение, используя методы VCL, но не через Synchronize, то в случайные моменты времени оно будет выдавать AV, поскольку основная часть VCL не потокобезопасна.
Автор: LadyOfWood
Дата сообщения: 28.03.2015 15:22
В любом случае надо смотреть в сторону синхронизации. Если есть отдельный поток, то все вызовы к VCL должны быть обернуты в Synchronize.
Автор: ziesto
Дата сообщения: 28.06.2015 01:56

Цитата:
NeoAnomaly, пока я гуглю - можешь популярно объяснить, в чём связь между "потоком" и "асинхронным выводом изображения"? В смысле, на каком курсе универа им приписывают взаимоисключающую друг друга связь? А то, может, я на самом деле пропустил чего...

Перечитал несколько раз, так и не понял, что автор имел ввиду...
Автор: NeoAnomaly
Дата сообщения: 29.06.2015 08:34
ziesto, вопрос то решился? ))

Перечитал начало темы, по поводу бесконечного прогресса, как вариант: ProgressBar.Style := pbstMarquee.
Автор: protoror
Дата сообщения: 09.07.2015 11:00
Попробуй TRzAnimator из Raize components все прекрастно работает
Автор: ziesto
Дата сообщения: 19.07.2015 11:39
Вопрос решился тем, что я просто показываю статическую GIF и все

protoror, спасибо, попробую
Автор: idiMAN
Дата сообщения: 20.07.2015 16:24
ziesto
В своё время использовал rxGif примерно так:
1) Раскладывал TGIFImage на фреймы
2) По событию таймера циклически показывал фрейм за фреймом
Автор: AlmazSpb2
Дата сообщения: 26.08.2015 09:18
В последнем JVCL тоже все хорошо работает. Код потокобезопасен - везде использован Synchronize.

Страницы: 1

Предыдущая тема: УЧЕТ ОРГТЕХНИКИ НА ПРЕДПРИЯТИИ


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.