|
Вопрос # 4 201/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Возникла проблема при обработке таймером события Ontimer в составе массива. Постоянно выскакивает ошибка при переходе к этой процедуре. Подскажите пожалуйста что не так? Программа прекрасно работает если массив не создавать, а создать просто 1 таймер.
Вырезка из кода в приложении. Пожалуйста подскажите в чем проблема?
Приложение: Переключить в обычный режим- type
- TForm1 = class(TForm)
- MainMenu1: TMainMenu;
-
-
-
- procedure Showframes(Sender: TObject);
- private
-
- public
-
- end;
-
- type
- frameset = record
-
- apolosa : array [0 .. 100, 0 .. 100] of tbitmap;
-
-
-
- frametimer : Ttimer;
- end;
-
-
-
- var
- Form1: TForm1;
- polosa : string;
-
-
-
- frames : array [0 .. 100] of frameset;
-
- //***************************************************************
-
- implementation
-
- uses Unit2;
-
- {$R *.dfm}
-
-
- //----------------------------------------------------------------
-
- begin
-
- frames[op].frametimer:=ttimer.Create(form1);
- frames[op].frametimer.Interval:=200;
- frames[op].frametimer.Enabled:=false;
- frames[op].frametimer.OnTimer:= form1.Showframes;
-
-
-
- end;
- //----------------------------------------------------------------
-
- begin
-
-
-
-
- buffering;
-
- frames[op].frametimer.Enabled:=true;
- end;
- //----------------------------------------------------------------
- procedure Tform1.Showframes(Sender: TObject);
- begin
-
-
-
-
- end;
- //----------------------------------------------------------------
- end.
-
 |
Вопрос задал: ivancheg (статус: Посетитель)
Вопрос отправлен: 21 мая 2010, 15:07
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 21 мая 2010, 18:53; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 21 мая 2010, 15:14 [#1]:
а зачем такая странная структура? только по предварительным наброскам она займет не менее 16 мб.
Но ошибка ещё в середине процедуры обработки OnTimer - представьте, что все таймеры сработали и зашли туда. А они будут выполняться очень хитро.
Итого - ошибка в дизайне.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
ivancheg (статус: Посетитель), 21 мая 2010, 16:24 [#2]:
структура ... ну по идее надо загрузить много полос со спрайтами, спрайты эти находятся как в 1й полосе, так и в матрице [n, m]. После загрузки они должны выводится на экран и покадрово воспроизводить анимацию по таймеру. т.е. задумка была такая что загружаю "полосу", режу ее, воспроизвожу в нужной последовательности и с нужной скоростью. То что проблема в procedure Tform1.Showframes(Sender: TObject); это понятно, но как это сделать правильно? нельзя же прописать процедуру обработки для каждого таймера ... весь смысл процедуры теряется тогда вообще.
Хотя с размером массива возможно погорячился.
|
|
Вадим К (статус: Академик), 21 мая 2010, 16:47 [#3]:
таймеров такое кол-во не нужно. Можно обойтись всего одним.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
ivancheg (статус: Посетитель), 21 мая 2010, 18:53 [#4]:
ок, спасибо.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|