Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
Донской   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.008 c
8-62162
shark
2003-08-22 12:27
2003.12.19
OpenGl


1-62076
Ил_204
2003-12-09 09:51
2003.12.19
Версия проекта


1-61999
selena
2003-12-05 13:13
2003.12.19
Смена кодировки


7-62291
Olexander
2003-10-12 16:43
2003.12.19
memory leak


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский