Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.036 c
3-1118205610
Ярослав
2005-06-08 08:40
2005.07.18
Диалог создания строки соеденения в ADOConnection


3-1118161850
Alex Romanskiy
2005-06-07 20:30
2005.07.18
Как в InterBase получить текущее значение генератора?


4-1116539275
arous
2005-05-20 01:47
2005.07.18
Размещение папки "Быстрый запуск"


9-1112702530
Marl
2005-04-05 16:02
2005.07.18
PowerTimer


14-1118838566
Поручик
2005-06-15 16:29
2005.07.18
Будет ли в России революция?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский