![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
У меня на таймере в программе стоит отрисовка на TImage, но почему-то при запуске программы сразу выкидывает с ошибкой "Access violation at adress...", всетаки успев отрисовать на TImage. При отрисовке на TImage при создание формы все нормально. Помогите разобраться, программа прикрепленна к посту. Если поможете еще и в оптимизации вывода графики, буду очень благодарен!
|
|
#2
|
||||
|
||||
|
В общем закоментируй строку и всё нормально:
Код:
// PIC.Destroy; |
|
#3
|
||||
|
||||
|
Цитата:
А как уничтожить много насозданых битмапов в памяти? |
|
#4
|
||||
|
||||
|
Цитата:
Последний раз редактировалось Oleg, 13.01.2008 в 16:53. |
|
#5
|
|||
|
|||
|
Убери лишний битм и работает быстрей и памяти меньше кушает!
procedure DrawM; var n, i,k,f,d: Integer; c: Char; s: String; begin s:=''; f:=0; CAN.Canvas.Rectangle(0,0,962,592); for i:=0 to 27 do begin s:=M.Strings[i]; for k:=0 to 26 do begin c:=s[k+1]; case c of 'A': n:=1; 'B': n:=2; 'C': n:=3; 'D': n:=4; end; begin if i mod 2>0 then d:=17 else d:=0; CAN.Canvas.Draw(k*35-d+17,i*25-f,BUF[n]); FMAIN.MAP.Canvas.Draw(0,0,CAN); end; end; f:=f+4; end; end; procedure TFMAIN.TTimer(Sender: TObject); begin application.ProcessMessages; {Чтобы всё процессорное время не отнять} DrawM; {на сайте EXESCHNICK посмотри} end; |
|
#6
|
||||
|
||||
|
Спасибо! Работает как надо. Только вот тормозит жутко. Пожалуйста подскажите как можно оптимизировать.
|