Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 11:29   #1
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
Радость Выполнение действий по таймеру

Всем привет! У меня следующая ситуация.

Есть компонент ListView и в нём сделаны 2 столбика с данными. 1 столбик это ссылки, а во втором указывается время. В него может добавляться любое количество строчек типа (ссылка, время) от 1 допустим до 100. И по истечении времени, напротив ссылки, она должна загружаться и так циклически. Т.е. есть много ссылок со своим временем и каждая должна загружаться по истечению своего времени. Так, как бы я каждую поставил в компонент Timer. Я думал на счёт алгоритма реализации и толком ничего не придумал. Тут ничего сложного нету, НО вся загвоздка в том, что ссылки должны заново загружаться по истечению времени. Время для каждой своё. Подскажите, пожалуйста, как можно реализовать такой алгоритм. Я подумывал создавать в Run Time для каждой строки компонент Timer, но это не получится, хотя я могу ошибаться.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 25.09.2011, 11:44   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

один компонент для всего оркестра.
Я бы создал динамический массив записей типа:
Код:
TUrlActive = packed record
  URL            : string;
  TimeOutSec : integer; // сколько должна висеть ссылка
  TimeDelay   : integer;  // сколько "висит" ссылка
end;
в таймере, который выставлен на срабатывание через 1 секунду стоит следущий код:

Код:
var URL : array of TUrlActive;

for i:=0 to LenGth(URL)-1 do
if url[i].TimeOutSec>0 then 
begin
 url[i].TimeDelay:=url[i].TimeDelay+1;
 if (url[i].TimeDelay mod url[i].TimeOutSec) = 0 then
 begin
  url[i].TimeDelay :=0;
  url[i].TimeOutSec :=0;
  // наступил момент когда ссылка устарела
 помечаем её TimeOutSec=0 и в следующем цыкле удалим все подобные с массива и списка
 end;
end;
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 25.09.2011, 11:48   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если временная точность загрузки ссылок допускает, можно одним таймером раз в несколько секунд проверять для каждой ссылки сколько времени прошло и делать соответствующие действия. Проверку лучше не по ListView, а по массиву в памяти, побыстрей цикл отработает. Есть в какой-то библиотеке компонент контейнер для таймеров, кажется в RxLib. Сейчас нет под рукой, если заинтересует, в понедельник точно скажу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.09.2011, 16:02   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Спасибо всем за помощь! Всё заработало JUDAS, я использовал ваш вариант, только немного его подправил. При выполнении кода не выделяется память под массив, поэтому добавит ещё строку SetLength(URL,Length(S));.
У меня были идеи так сделать, но я думал всё проворачивать через StringList, а оказывается всё гениальное просто
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение действий при смене значений ComboBox iGremlin Microsoft Office Excel 9 16.08.2011 14:48
Выполнение действий перейдя по ссылке, как? men232 Помощь студентам 3 27.07.2011 19:40
Передача информации в другое приложение и выполнение в нем действий!!! Andersen1313 Общие вопросы Delphi 2 17.04.2011 13:55
Авторизация и выполнение действий. Rock'n'rolla Работа с сетью в Delphi 13 25.01.2010 21:05
выполнение нескольких действий??? zzzzz HTML и CSS 2 11.12.2008 11:59