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

Вниз

Ошибка -   Найти похожие ветки 

 
Донской ©   (2003-12-04 10:36) [0]

День добрый!
Есть код, который прорисовывает график на TBitmap, а затем копирует его на TImage - уже на форме.
Почему-то под win98 на не очень быстрой машине появляется такая ошибка (см сабж)и программа слетает. Появляется очень нерегулярно, иногда через часы работы. Но очень нужно разобраться в причинею
Никто не встречался с таким?


 
Murad ©   (2003-12-04 10:41) [1]

1. Может приветешь код
2. А используются ли потоки ?
3. Win98 SE или просто win98 ?


 
Донской ©   (2003-12-04 10:55) [2]

Да код простой.
Да, я использую потоки. Но поток посылает SendMessage(Form.Handle,WM_USER+1,0,0),
И форма прорисовкой занимается сама при обработке этого сообщения.
То есть никакой синхронизации не нужно. Поток раз в три секунды посылает сообщение форме, и больше никакой связанной с графикой деятельности не делает.
Мне пришла в голову такая мысль. Я как-то натолкнулся на проблему под Win98? связанную с установкой на систему оптической мышки (A4-TECH, WOP35). Казалось бы, какая связь? а вот получилось, что связь есть - она слишком часто генерила прерывания и сбивала таймер (простая проверка компонентом TTimer показала сильный разброс во времени срабатывания при активности указанной мышки и при ее отсутствии). Может такое и здесь проявляется (там как раз такая мышка стоит)... Надо будет проверить.


 
REA ©   (2003-12-04 10:55) [3]

Вариант - утечка ресурсов. Под W98 возможно ресурсов меньше и они быстрее кончаются.


 
Юрий Федоров ©   (2003-12-04 10:59) [4]


> Но поток посылает SendMessage(Form.Handle,WM_USER+1,0,0),


А если заменить на PostMessage ?


 
хамло   (2003-12-04 11:02) [5]

2 Донской [2]

похоже на бред, но я верю ))
позавчера не мог понять, почему при инициализации БДЕ машина просто вешается. оказывается в настройках экрана была установлена цветовая палитра в 16 цветов. сменил на 16 бит - и все заработало. меняешь назад на 16 цветов - дуля ))
где логика, где разум? © ))

P.S. Извините за оффтопик.


 
Донской ©   (2003-12-04 11:07) [6]

Кстати, там 16 цветов стоит.

Попробую Postmessage, действительно...


 
REA ©   (2003-12-04 11:20) [7]

Мыши на разных машинах действительно генерируют сообщения с разной скоростью (различающейся на порядки), но это не должно влиять на программу (разве что на производительность).


 
Anatoly Podgoretsky ©   (2003-12-04 11:29) [8]

По сообщению, однозначная утечка ресурсов.


 
_юзер_   (2003-12-04 11:32) [9]

у меня тоже были подобные траблы.
ошибка такая: Canvas not allow drawing - ресурсов винде не хватает


 
Анонимщик ©   (2003-12-04 11:45) [10]

Код все-таки нужно привести.
У тебя в дочернем потоке SendMessage
А в главном что происходит? Откуда он берет данные для прорисовки?


 
sniknik ©   (2003-12-04 12:06) [11]

хамло (04.12.03 11:02) [5]
> 2 Донской [2]
> похоже на бред, но я верю ))
> позавчера не мог понять, почему при инициализации БДЕ машина просто вешается. оказывается в настройках экрана была установлена цветовая палитра в 16 цветов. сменил на 16 бит - и все заработало. меняешь назад на 16 цветов - дуля ))
где логика, где разум? © ))

в программе есть DBGrig? если да то решение проблемы в корректировке его ресурса и перекомпиляции модуля. откроеш ресурс (имадж едитором) посмотри там все битмапы монохромные, исправиш все(исключая маски) на 16цв. будет работать.


 
Amoeba ©   (2003-12-04 13:25) [12]

Сталкивался с таким под Win9x. Под Win2k/XP все нормально. В моем случае имела место нехватка системных ресурсов (количество доступных дескрипторов определяется разрядностью OC). В твоем случае неисключена еще и их утечка, что под Win98 может оказаться фатальным.


 
_Zergey   (2003-12-08 12:02) [13]

По поводу ресурсов, а не стоит ли попробывать рисоваться на метафайле :)
По поводу реализации - использование TImage для такого рода задач - бред изначально! Наиболее удачным считаю использование TPaintBox и прописание у него OnPaint с кодом PaintBox1.Canvas.Draw(0,0,MetaFile); если не понравится этапность и мерцание при перересовки - тупо выставляем PaintBox1.Parent.DoubleBuffered:=True;
И вооще такие глобальные рассуждения по поводу плевой траблемы... нет слов :(


 
Erik ©   (2003-12-08 13:44) [14]

Проблема не плевая, у меня она постоянно проявляется на win 98. На Win2k/XP все в порядке. Причем системные ресурсы заканчиваются если запускается какоето звуковое приложкние(Winamp). И возникает это не при рисовании, а при перерисовке обычных визуальных компонентов. Бывает и при загрузке, особенно этим страдает QR. И решение у этой задачи нет.



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

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

Наверх




Память: 0.5 MB
Время: 0.022 c
3-61934
comwad
2003-11-27 06:57
2003.12.19
Как хранить в базе форматированный текст? XML?


7-62309
Nikk
2003-10-13 19:06
2003.12.19
Передача данных


1-62149
WolfGun
2003-12-09 13:46
2003.12.19
Сохранение формы в bmp.


1-62148
Psi-factor
2003-12-07 16:48
2003.12.19
Webbrowser


4-62324
frost
2003-10-23 17:26
2003.12.19
Ярлык