X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Delphi: цикл с таймеров
prolisk
prolisk
Topic Starter сообщение 22.11.2015, 13:30; Ответить: prolisk
Сообщение #1


Не могу разобраться полностью. Цикл, таймер выполняется, но не так как нужно.
Есть одно поле memo1, где, к примеру, 5 строк. Нужно по клику на button1 по строчке переносить в memo2 интервалом 3 секунды.
На форме: memo1, memo2, button1, timer1.
Делаю так.
настройки timer1: включено, interval = 0
События по клику button1:
var i:integer;
begin
i:=0;
while i<memo1.lines.count do //если i меньше, чем строк в memo1
begin
memo2.lines.add(memo1.lines[i]); //создаем строку в мемо2, копируя данные строки мемо1.линия[i]
timer1.interval:=3000;
i:=i+1;
timer1.enable:=false; //не суть, на это не стоит обращать внимание.
end;
end;


Отдельно вывожу memo1.lines.count, memo1.lines[i], выдает что нужно.
Только на мемо2 копируются все строки через 3 секунды (если не останавливать таймер). А нужно каждую строку по очереди в 3 секунды. Я так понимаю нужно правильно прописать вот здесь
memo2.lines.add(memo1.lines[i]);

Может кто подскажет?


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 22.11.2015, 15:26; Ответить: prolisk
Сообщение #2


(sov_rs)
1)по клику кнопки ты всего лишь стартуешь таймер

делал еще так - кнопка только для запуска таймера.
а в события таймера уже вышеописанный код.
(sov_rs)
глобальную переменную

так 'i' завел, разве не то? :)


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 22.11.2015, 23:17; Ответить: prolisk
Сообщение #3


Сделал i глобальной. Особо ничего не изменилось. Я так понимаю, что вопрос именно в выборке из memo по линиям.
вот код из программы:
procedure TForm1.btn3Click(Sender: TObject);
begin
tmr1.Enabled:=True;

end;


procedure TForm1.tmr1Timer(Sender: TObject);
begin
i:=0;
while i<mmo2.Lines.Count do
begin
mmo3.Lines.Add(mmo2.Lines[i]);
tmr1.Interval:=2000;
i:=i+1;
end;
end;


Первая часть - запуск таймера.
вторая - сам скрипт.
Все работает, но. Я ввожу в мемо каждую строку вручную. Нужно чтобы переносилось по 2 секунды по одной строке в другой мемо. А в итоге - переноситься все и сразу, а потом через 2 сек повторяется :)


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 23.11.2015, 14:30; Ответить: prolisk
Сообщение #4


(sov_rs)
зачем ты делаешь эти лишние телодвижения с while'ом.

я не супер прогер, как могу, так и делаю :) меняю педали.
Раньше только for делал, сейчас разобрался с while'ом. алгоритм... раньше думал так - если меньше строк, то добавляем запись и плюсуем.
А тут немного по-другому.
Спасибо, вечером затестю.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 25.11.2015, 2:10; Ответить: prolisk
Сообщение #5


sov, почти то что нужно.
Только первую строку Мемо не берет. А если прописывать i:=0, тогда только первую берет.
Если прописать так
begin
  inc(i);
i:=0;
  if i>memo1.Lines.Count then
    timer1.Enabled:=false
  else
    Memo2.Lines.Add(Memo1.Lines[i]);
i:=i+1;
end;

тоже только первую строку берет :)

Спасибо еще раз.

Добавлено спустя 23 минуты 36 секунд:
уже ночь, башка не варит, понимаю что ставя i:=0 условия постоянно выполняется одно...


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
Topic Starter сообщение 25.11.2015, 15:33; Ответить: prolisk
Сообщение #6


(sov_rs)
поставил тут 0 изначально.

просто обьявил переменную
i:integer;

с вариантом -1 придумал уже утром, но думал ставить в код для таймера.
Ок, сегодня затестю. намечается неплохой проектик ;)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Приглашаем на работу Программиста Delphi + Oracle
0 Nika_2015 1357 26.3.2017, 21:06
автор: -Nika_2015-
Горячая тема (нет новых ответов) Качественное пакетное размещение статей на 500+ СДЛ сайтов с ЯК, Тиц! Полный цикл работ!
82 Antonium 24397 30.1.2014, 13:53
автор: a_seo
Открытая тема (нет новых ответов) Цикл "for" и простые способы для многослойных выпадающих меню и слайдшоу
0 hhpd 5173 17.2.2013, 5:47
автор: -hhpd-
Открытая тема (нет новых ответов) PHP разработчик + Delphi + Deutsch! Горящая! Минск
5 HR.Minsk 3568 7.8.2011, 0:56
автор: -HR.Minsk-
Открытая тема (нет новых ответов) Требуется высококлассный специалист по Delphi/SQL
0 AlexJJ 4233 15.5.2008, 13:48
автор: -AlexJJ-


 



RSS Текстовая версия Сейчас: 19.3.2024, 11:33
Дизайн