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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2014, 20:55   #1
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию Timer. Считаем время работы скрипта

Код:
var
  Form1: TForm1;
  i:Integer;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(i);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  i:=0;
  Timer1.Enabled:=True;
  Sleep(5000);
  Timer1.Enabled:=false;
  Label1.Caption:=IntToStr(i);
end;

Что я делаю не так?
bilibian вне форума Ответить с цитированием
Старый 27.02.2014, 21:00   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

всё. а что надо то?
eval вне форума Ответить с цитированием
Старый 27.02.2014, 21:25   #3
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
всё. а что надо то?
в Label нуль

Последний раз редактировалось bilibian; 27.02.2014 в 21:29.
bilibian вне форума Ответить с цитированием
Старый 27.02.2014, 21:41   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от bilibian Посмотреть сообщение
в Label нуль
вообще, Вы вообще всё делаете неправильно. Если нужно получить время, то нужно запоминать время перед выполнением чего-либо, а потом брать разницу между текущим временем и запомненным.

но, что касается вашего примера, то Sleep морозит форму и таймер не срабатываете ни разу!

попробуйте, например, такой код:
Код:
var j : integer;
begin
  i:=0;
  Timer1.Enabled:=True;
  Timer1.Interval := 100;
  for j := 0 to 200 do begin
    Application.ProcessMessages;
    Sleep(25);
  end;
  Timer1.Enabled:=false;
  Label1.Caption:=IntToStr(i);
end;

p.s. но ещё раз повторю, так делать НЕ НАДО!!!!
Лучше на одной кнопке (Старт) сделайте i:=0; Timer1.Enabled:=True;
а на другой кнопке (Стоп) сделайте Timer1.Enabled:=false; Label1.Caption:=IntToStr(i);
и никаких Sleep!

Последний раз редактировалось Serge_Bliznykov; 27.02.2014 в 21:43.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.02.2014, 21:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в Label нуль
Нада нуль??? О_о
Или надо время работы скрипта?
Если второе то:
Код:
var d:datetime;
...
d:=now;
...Работа скрипта
Label.Caption:=IntToStr(SecondsBetween(now,d))+' сек.';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2014, 21:53   #6
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Stilet, не работает Ваш пример. Ошибка. Даже если

Код:
var d:datetime;
заменить на

Код:
var d:TDateTime;
Undeclared identifier: 'SecondsBetween'

Последний раз редактировалось bilibian; 27.02.2014 в 22:08.
bilibian вне форума Ответить с цитированием
Старый 27.02.2014, 22:11   #7
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Пардон. В uses не указал DateUtils

Все работает. Спасибо!
bilibian вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
использование Timer для работы с dataGridView pcacer C# (си шарп) 9 16.04.2012 19:34
delphi и время (Timer) arthur1 Общие вопросы Delphi 12 14.09.2011 22:54
Изменить время в timer Alex Cones Общие вопросы Delphi 4 10.07.2010 18:37
Как во время работы скрипта постепенно выводить результаты kolchakA PHP 4 16.11.2009 11:09
httpd.exe во время работы скрипта постепенно занимает ОЗУ Niodar PHP 0 03.10.2009 08:48