Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

массив и компоненты приложения [D4, D6, WinXP]


Страницы:   1 2

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
...
Используешь


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо