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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 4 201

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

Здравствуйте, уважаемые эксперты!
Возникла проблема при обработке таймером события Ontimer в составе массива. Постоянно выскакивает ошибка при переходе к этой процедуре. Подскажите пожалуйста что не так? Программа прекрасно работает если массив не создавать, а создать просто 1 таймер.
Вырезка из кода в приложении. Пожалуйста подскажите в чем проблема?

Приложение:
  1. type
  2. TForm1 = class(TForm)
  3. MainMenu1: TMainMenu;
  4.  
  5.  
  6.  
  7. procedure Showframes(Sender: TObject);
  8. private
  9.  
  10. public
  11.  
  12. end;
  13.  
  14. type
  15. frameset = record
  16.  
  17. apolosa : array [0 .. 100, 0 .. 100] of tbitmap;
  18.  
  19.  
  20.  
  21. frametimer : Ttimer;
  22. end;
  23.  
  24.  
  25.  
  26. var
  27. Form1: TForm1;
  28. polosa : string;
  29.  
  30.  
  31.  
  32. frames : array [0 .. 100] of frameset;
  33.  
  34. //***************************************************************
  35.  
  36. implementation
  37.  
  38. uses Unit2;
  39.  
  40. {$R *.dfm}
  41.  
  42.  
  43. //----------------------------------------------------------------
  44.  
  45. begin
  46.  
  47. frames[op].frametimer:=ttimer.Create(form1);
  48. frames[op].frametimer.Interval:=200;
  49. frames[op].frametimer.Enabled:=false;
  50. frames[op].frametimer.OnTimer:= form1.Showframes;
  51.  
  52.  
  53.  
  54. end;
  55. //----------------------------------------------------------------
  56.  
  57. begin
  58.  
  59.  
  60.  
  61.  
  62. buffering;
  63.  
  64. frames[op].frametimer.Enabled:=true;
  65. end;
  66. //----------------------------------------------------------------
  67. procedure Tform1.Showframes(Sender: TObject);
  68. begin
  69.  
  70.  
  71.  
  72.  
  73. end;
  74. //----------------------------------------------------------------
  75. end.
  76.  


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

Вопрос задал: ivancheg (статус: Посетитель)
Вопрос отправлен: 21 мая 2010, 15:07
Состояние вопроса: открыт, ответов: 0.


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

Всего сообщений: 4; последнее сообщение — 21 мая 2010, 18:53; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 21 мая 2010, 15:14 [#1]:

а зачем такая странная структура? только по предварительным наброскам она займет не менее 16 мб.

Но ошибка ещё в середине процедуры обработки OnTimer - представьте, что все таймеры сработали и зашли туда. А они будут выполняться очень хитро.

Итого - ошибка в дизайне.
Галочка "подтверждения прочтения" - вселенское зло.
ivancheg

ivancheg (статус: Посетитель), 21 мая 2010, 16:24 [#2]:

структура ... ну по идее надо загрузить много полос со спрайтами, спрайты эти находятся как в 1й полосе, так и в матрице [n, m]. После загрузки они должны выводится на экран и покадрово воспроизводить анимацию по таймеру. т.е. задумка была такая что загружаю "полосу", режу ее, воспроизвожу в нужной последовательности и с нужной скоростью. То что проблема в procedure Tform1.Showframes(Sender: TObject); это понятно, но как это сделать правильно? нельзя же прописать процедуру обработки для каждого таймера ... весь смысл процедуры теряется тогда вообще.

Хотя с размером массива возможно погорячился.
Вадим К

Вадим К (статус: Академик), 21 мая 2010, 16:47 [#3]:

таймеров такое кол-во не нужно. Можно обойтись всего одним.
Галочка "подтверждения прочтения" - вселенское зло.
ivancheg

ivancheg (статус: Посетитель), 21 мая 2010, 18:53 [#4]:

ок, спасибо.

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

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