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

Вниз

массив и компоненты приложения   Найти похожие ветки 

 
olevacho_ ©   (2005-06-30 21:23) [0]

Не знаю смогу ли объяснить точно что мне нужно. Есть в приложении 10 таймеров Timer1:TTimer , Timer2:Ttimer ... Timer10: TTimer - стандартные компоненты. Нужно создать массив ссылок на эти компоненты так чтобы при обращении к какому-то елементу массива реально обращаться к существующему таймеру. Например если нужно включить 5 таймер то не писать Timer5.enabled:=true; а сделать это обращением к пятому елементу массива? Продемонстрируйте пожалуйста на конкретном примере.


 
begin...end ©   (2005-06-30 21:26) [1]

var
 i: Integer;
 Timers: array [1..10] of TTimer;
begin
 for i := Low(Timers) to High(Timers) do
   Timers[i] := TTimer.Create(Application)
end.


 
Просто Джо ©   (2005-06-30 21:27) [2]

type
 TTimers = array [1..10] of TTimer;
....
в приватной секции формы
 FTimers: TTimers;
...
При создании формы
 FTimers[1] := Timer1;
 FTimers[2] := Timer2;
etc
...
Используешь


 
Alexander Panov ©   (2005-06-30 21:28) [3]

var
 TimerArray: Array[1..10] of TTimer;
...

 TimerArray[1] := Timer1;
 ..
 TimerArray[10] := Timer10;
 

...

 TimerArray[10].Enabled := False;


 
-=XP=- ©   (2005-06-30 22:14) [4]

Ну, еще и я напишу:

TMyForm = class(TForm)
 <...>
private
 function GetTimer(iIndex: integer): TTimer;
public
 property Timer[iIndex: integer]: TTimer read GetTimer;
end;
 <...>

function TMyForm.GetTimer(iIndex: integer): TTimer;
begin
 Result := TTimer(FindComponent("Timer" + IntToStr(iIndex)));
 if (Result = nil) then
   raise Exception.Create("Timer not found."#13"Index: " + iIndex);
end;


P.S. Набирал прямо тут - могут быть очепятки.


 
deamon_t   (2005-06-30 23:07) [5]

Так будет удобнее если таймеры уже на форме есть

var x:array [0..9] of ^TTimer; //Создаёшь массив указателей на тип TTimer
begin
 //Тута их инициализируешь
 x[0]:=@Timer1;
 x[1]:=@Timer2;
end;


 
Плохиш ©   (2005-06-30 23:34) [6]


> deamon_t   (30.06.05 23:07) [5]

TTimer уже указатель.


 
deamon_t   (2005-07-01 00:14) [7]

А вот такой вопрос немного не по теме? Все экземпляры класса указатели? А что происходит здесь?
------------------------------------
var
TimerArray: Array[1..10] of TTimer;
...
TimerArray[1] := Timer1;
------------------------------------
TimerArray[1] это указатель, и ему просто присваиваеться адресс уже проинициализированной структуры или экземпляр класса побайтово копируеться? Можно с примерами оба варианта плиз...

ЗЫ Блин скока вопросов выдал... :-)


 
Плохиш ©   (2005-07-01 00:18) [8]


> deamon_t   (01.07.05 00:14) [7]

Присваивается указатель

а в [5] присваивается указатель на указатель


 
Digitman ©   (2005-07-01 10:16) [9]


> olevacho_


и зачем ты засандалил столько таймеров ?)

вполне и одним м.б. обойтись.


 
Tor ©   (2005-07-01 10:20) [10]

рас уж десять таймеров то луче компоненты не юзать а юзать через апи. Дофига получается таймеров, приложение не тормозит? :)


 
Anatoly Podgoretsky ©   (2005-07-01 10:22) [11]

Tor ©   (01.07.05 10:20) [10]
А почему должно тормозить, какие к этому основания, с ДОС не путаешь?


 
Tor ©   (2005-07-01 10:38) [12]

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


 
evvcom ©   (2005-07-01 10:47) [13]


> смотря через какое время таймеры срабатывают. винде и так
> есть что делать, а тут еще и таймеры прилогаются.

Таймеры на скорость работы винды никак не должны повлиять. Тут дело в другом. Ресурсы экономить надо.


 
evvcom ©   (2005-07-01 10:48) [14]


> то луче компоненты не юзать а юзать через апи

А разница-то какая?


 
Tor ©   (2005-07-01 11:08) [15]

evvcom ©
тем что TTimer тянет за собой vcl, на скорость винды нет, а на скорость проги да.
TTimer и так через апи сделан тока гораздо усложнен, исходники погляди.


 
BiN ©   (2005-07-01 11:24) [16]

По поводу тормозов и т.д.:

10 VCL-таймеров - это 10 дополнительных окон + 10 ядерных объектов timer.


 
Tor ©   (2005-07-01 11:30) [17]

> BiN ©   круто сказал :)))

сори за офтоп


 
evvcom ©   (2005-07-01 13:02) [18]


> тем что TTimer тянет за собой vcl, на скорость винды нет,
> а на скорость проги да.

Не такой уж и большой этот VCL. И как же этот VCL влияет на скорость проги? Ты через него пароль из миллиардов комбинаций подбираешь или выполняешь раз в секунду/минуту/десять и т.п. килобайт кода? Это ж каким таким образом ты должен уловить миллионную долю секунды разницы в скорости выполнения этих двух вариантов?

> 10 VCL-таймеров - это 10 дополнительных окон + 10 ядерных
> объектов timer

Согласен. Только если автору не жаль лишних 9 ядерных объектов timer, то чего уж тут экономить на окнах?


 
GrayFace ©   (2005-07-01 13:29) [19]

olevacho_ ©   (30.06.05 21:23)
Есть в приложении 10 таймеров

Мне уже страшно! Как представлю, что на 10 TPUtilWindow станет больше...

evvcom ©   (01.07.05 13:02) [18]
Только если автору не жаль лишних 9 ядерных объектов timer, то чего уж тут экономить на окнах?

Неужели объекты Timer весят больше, чем окна?


 
evvcom ©   (2005-07-01 13:45) [20]


> Неужели объекты Timer весят больше, чем окна?

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


 
Faraday   (2005-07-01 13:52) [21]

Если используется графика (анимация, например), то лучше API конечно, а если обновлять таблицы БД, то сойдут и стандартные.



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

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

Наверх




Память: 0.52 MB
Время: 0.037 c
14-1118846605
Vulko
2005-06-15 18:43
2005.07.18
Как вам сайт?


1-1119787721
Руслана
2005-06-26 16:08
2005.07.18
Почему происходит ошибка?


14-1119768113
Viktop
2005-06-26 10:41
2005.07.18
Халявные FTP


3-1118193329
paule
2005-06-08 05:15
2005.07.18
Не обновляются данные


14-1119819794
Petr V. Abramov
2005-06-27 01:03
2005.07.18
shall и will