• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

таймер

  • Автор темы nattaella
  • Дата начала
N

nattaella

При нажатии на кнопку BitBtn1 у меня одновременно должны начать выполняться процедура RunRight(0); и в LEdit4 показываться числа от 15 до 0 с интервалом в 1 сек. :

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var p:integer;
begin
RunRight(0);
for i:=5 downto 1 do begin
LEdit4.Text:=inttostr(i);
sleep(1000);
Application.ProcessMessages;
LEdit4.Text:=inttostr(i-1);
end;
end;
Код:

Как сделать, чтоб они выполнялись одновременно? Может использовать потоки?
 
N

nayke

При нажатии на кнопку BitBtn1 у меня одновременно должны начать выполняться процедура RunRight(0); и в LEdit4 показываться числа от 15 до 0 с интервалом в 1 сек. :

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var p:integer;
begin
RunRight(0);
for i:=5 downto 1 do begin
LEdit4.Text:=inttostr(i);
sleep(1000);
Application.ProcessMessages;
LEdit4.Text:=inttostr(i-1);
end;
end;
Код:

Как сделать, чтоб они выполнялись одновременно? Может использовать потоки?

Можно через компонент TTimer
на click вешаете
Код:
begin
RunRight(0);
k:=0;
EndTimer:=15;
Timer1.enabled:=true;

в обработчике таймера

Код:
label4.caption:=k;
timer1.enabled:=not(k=EndTimer);
inc(k);

переменные k,EndTimer глобальные целые.
Однако это не означает, что ваша процедура будет идти 15 сек. Если вам необходимо именно по действиям процедуры ставить таймер нужно другое решение исходя их кода процедуры.
 
I

ikot

Можно через компонент TTimer
на click вешаете
Код:
begin
RunRight(0);
k:=0;
EndTimer:=15;
Timer1.enabled:=true;

в обработчике таймера

Код:
label4.caption:=k;
timer1.enabled:=not(k=EndTimer);
inc(k);

переменные k,EndTimer глобальные целые.
Однако это не означает, что ваша процедура будет идти 15 сек. Если вам необходимо именно по действиям процедуры ставить таймер нужно другое решение исходя их кода процедуры.

использование таймера не решит проблемы, так как код будет выполнятся последовательно, т.е. сначала выполнится процедура RunRight, а только затем включится таймер. И поскольку никому, кроме автора, неизвестно что делает эта процедура (а она может, например, заморозить работу основной программы на 30 мин. к примеру), то одним из вариантов решения - это использование потоков
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!