![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
массив и компоненты приложения [D4, D6, WinXP]
olevacho_ © (2005-06-30 21:23:00)Не знаю смогу ли объяснить точно что мне нужно. Есть в приложении 10 таймеров Timer1:TTimer , Timer2:Ttimer ... Timer10: TTimer - стандартные компоненты. Нужно создать массив ссылок на эти компоненты так чтобы при обращении к какому-то елементу массива реально обращаться к существующему таймеру. Например если нужно включить 5 таймер то не писать Timer5.enabled:=true; а сделать это обращением к пятому елементу массива? Продемонстрируйте пожалуйста на конкретном примере.
Faraday (2005-07-01 13:52:00) [1]Если используется графика (анимация, например), то лучше API конечно, а если обновлять таблицы БД, то сойдут и стандартные.
evvcom (2005-07-01 13:45:00) [2]
> Неужели объекты Timer весят больше, чем окна?
А кто говорил про "вес"?
Если изначально к вопросу подходить так, что ресурсы винды неограничены, то пофиг сколько там окон создастся и сколько таймеров ядреных, и пофиг сколько это будет на "вес" (ресурсы же не ограничены). А если же все таки бережно относиться к ресурсам, то надо экономить и на таймерах ядра, поскольку ошибка системы, говорящая об исчерпании ресурса таймеров, куда страшнее, чем своп на винт куска памяти из-за "большого веса" того или иного окна.
GrayFace (2005-07-01 13:29:00) [3]olevacho_ © (30.06.05 21:23)
Есть в приложении 10 таймеров
Мне уже страшно! Как представлю, что на 10 TPUtilWindow станет больше...
evvcom © (01.07.05 13:02) [18]
Только если автору не жаль лишних 9 ядерных объектов timer, то чего уж тут экономить на окнах?
Неужели объекты Timer весят больше, чем окна?
evvcom (2005-07-01 13:02:00) [4]
> тем что TTimer тянет за собой vcl, на скорость винды нет,
> а на скорость проги да.
Не такой уж и большой этот VCL. И как же этот VCL влияет на скорость проги? Ты через него пароль из миллиардов комбинаций подбираешь или выполняешь раз в секунду/минуту/десять и т.п. килобайт кода? Это ж каким таким образом ты должен уловить миллионную долю секунды разницы в скорости выполнения этих двух вариантов?
> 10 VCL-таймеров - это 10 дополнительных окон + 10 ядерных
> объектов timer
Согласен. Только если автору не жаль лишних 9 ядерных объектов timer, то чего уж тут экономить на окнах?
Tor (2005-07-01 11:30:00) [5]> BiN © круто сказал :)))
сори за офтоп
BiN (2005-07-01 11:24:00) [6]По поводу тормозов и т.д.:
10 VCL-таймеров - это 10 дополнительных окон + 10 ядерных объектов timer.
Tor (2005-07-01 11:08:00) [7]evvcom ©
тем что TTimer тянет за собой vcl, на скорость винды нет, а на скорость проги да.
TTimer и так через апи сделан тока гораздо усложнен, исходники погляди.
evvcom (2005-07-01 10:48:00) [8]
> то луче компоненты не юзать а юзать через апи
А разница-то какая?
evvcom (2005-07-01 10:47:00) [9]
> смотря через какое время таймеры срабатывают. винде и так
> есть что делать, а тут еще и таймеры прилогаются.
Таймеры на скорость работы винды никак не должны повлиять. Тут дело в другом. Ресурсы экономить надо.
Tor (2005-07-01 10:38:00) [10]Anatoly Podgoretsky ©
смотря через какое время таймеры срабатывают. винде и так есть что делать, а тут еще и таймеры прилогаются. Может гораздо проще в одельном патоке все это юзать. смотря что за прога.
Anatoly Podgoretsky (2005-07-01 10:22:00) [11]Tor © (01.07.05 10:20) [10]
А почему должно тормозить, какие к этому основания, с ДОС не путаешь?
Tor (2005-07-01 10:20:00) [12]рас уж десять таймеров то луче компоненты не юзать а юзать через апи. Дофига получается таймеров, приложение не тормозит? :)
Digitman (2005-07-01 10:16:00) [13]
> olevacho_
и зачем ты засандалил столько таймеров ?)
вполне и одним м.б. обойтись.
Плохиш (2005-07-01 00:18:00) [14]
> deamon_t (01.07.05 00:14) [7]
Присваивается указатель
а в [5] присваивается указатель на указатель
deamon_t (2005-07-01 00:14:00) [15]А вот такой вопрос немного не по теме? Все экземпляры класса указатели? А что происходит здесь?
------------------------------------
var
TimerArray: Array[1..10] of TTimer;
...
TimerArray[1] := Timer1;
------------------------------------
TimerArray[1] это указатель, и ему просто присваиваеться адресс уже проинициализированной структуры или экземпляр класса побайтово копируеться? Можно с примерами оба варианта плиз...
ЗЫ Блин скока вопросов выдал... :-)
Плохиш (2005-06-30 23:34:00) [16]
> deamon_t (30.06.05 23:07) [5]
TTimer уже указатель.
deamon_t (2005-06-30 23:07:00) [17]Так будет удобнее если таймеры уже на форме есть
var x:array [0..9] of ^TTimer; //Создаёшь массив указателей на тип TTimer
begin
//Тута их инициализируешь
x[0]:=@Timer1;
x[1]:=@Timer2;
end;
-=XP=- (2005-06-30 22:14:00) [18]Ну, еще и я напишу:
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. Набирал прямо тут - могут быть очепятки.
Alexander Panov (2005-06-30 21:28:00) [19]var
TimerArray: Array[1..10] of TTimer;
...
TimerArray[1] := Timer1;
..
TimerArray[10] := Timer10;
...
TimerArray[10].Enabled := False;
Просто Джо (2005-06-30 21:27:00) [20]type
TTimers = array [1..10] of TTimer;
....
в приватной секции формы
FTimers: TTimers;
...
При создании формы
FTimers[1] := Timer1;
FTimers[2] := Timer2;
etc
...
Используешь