Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Проблема с таймером   Найти похожие ветки 

 
Numark   (2006-12-26 15:54) [0]

Привет мастера! Сначало код:
fstval := i;
realval := 0;
countt := 0;
Timer1.Enabled := True;
<...>
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(countt);
if countt = 60 then
begin
endval := i;
realval := endval - fstval;
countt := 0;
fstval := i;
end;
end;
<...>
Label1.Caption := "Скорость: "+IntToStr(realval)+" f/m";

Смысл в том, что перед запуском таймера, в переменную fstval, заносится значение переменной i, далее, по прошествии 1 минуты, значение i, заносится в endval, и то, насколько fstval меньше endval, заносится в realval.
Так я вычисляю скорость обработки. Но проблема в том, что realval, всегда равна показателю переменной countt (счётчику в таймере).
Т.Е. результат выводится не через минуту, как мне хотелось бы, а по достижению realval 60-ти.
Подскажите в чём проблема?  Спасибо.


 
Elen ©   (2006-12-26 16:07) [1]


>  результат выводится не через минуту, как мне хотелось бы,
>  а по достижению realval 60-ти.

Что-то я не совсем пойму проблему... А Интервал таймера какой?


 
Сергей М. ©   (2006-12-26 16:08) [2]


> результат выводится не через минуту


А где в обработчике события таймера "вывод результата" ?


 
Numark   (2006-12-26 16:09) [3]

Elen ©   (26.12.06 16:07) [1]
1000


 
Elen ©   (2006-12-26 16:11) [4]


> Numark

Либо задачу поподробнее либо [2]


 
Numark   (2006-12-26 16:11) [5]

Сергей М. ©   (26.12.06 16:08) [2]

procedure TForm1.Button1Click(Sender: TObject);
begin
<...>
//определяем скорость.
fstval := i;
realval := 0;
countt := 0;
Timer1.Enabled := True;
//..................
wannarepeat:=true;
repeat
Application.ProcessMessages;
Label1.Caption := "Скорость: "+IntToStr(realval)+" f/m";
<...> //тут идёт обработка, и начисление переменной i
until wannarepeat = false;
end;


 
Elen ©   (2006-12-26 16:12) [6]


> 1000

Это не минута это 1000 миллисекунд=1 сек.


 
novill ©   (2006-12-26 16:13) [7]

Я вот с трех проходов так и не понял организации...
Почему тебе таймер на 1 минуту не выставить?

Как у тебя переменые объявлены?


 
Сергей М. ©   (2006-12-26 16:14) [8]


> Numark   (26.12.06 16:11) [5]


Еще раз спрашиваю: где в обработчике события таймера "вывод результата" ?


 
Elen ©   (2006-12-26 16:15) [9]


> Numark   (26.12.06 16:11) [5]

Ох чует мое сердце, подход не хороший... Чеб не в таймере вывод делать?


 
Ega23 ©   (2006-12-26 16:19) [10]


> Это не минута это 1000 миллисекунд=1 сек.
>


И то не факт. В смысле, что это ровно секунда будет


 
Elen ©   (2006-12-26 16:21) [11]


>  В смысле, что это ровно секунда будет

Ха. Ну так и до минуты-то далековато ;) Хотя... Энштейн... Искривление пространства и времени...


 
Ega23 ©   (2006-12-26 16:25) [12]


> Ха. Ну так и до минуты-то далековато ;) Хотя... Энштейн.
> .. Искривление пространства и времени...


Да я не о том. Поставь интервал таймера 60000 (минута) - не факт, что между тиками пройдёт ровно 60000 мс.


 
Numark   (2006-12-26 16:30) [13]

novill ©   (26.12.06 16:13) [7]
> Почему тебе таймер на 1 минуту не выставить?

Сделал так, вроде заработало, хотя это не совсем приемлемо, т.к. в label1 по ходу работы, скорее всего, будет необходимо добавить вывод и д.р. результатов, со скоростью вывода менее 1 минуты.

> Elen ©   (26.12.06 16:15) [9]
Ну, как я уже выше написал, в таймере, скорее всего, будет необходимо добавить вывод результатов, со скоростью обновления менее 1-ой минуты.

> Сергей М. ©   (26.12.06 16:14) [8]
В таймере не выводятся результаты, а там всего лишь они подсчитывается.
Результат выводится в цикле button1.


 
Elen ©   (2006-12-26 16:56) [14]


> Результат выводится в цикле button1.

Чепуха какая-то. Смотри ты себе такие подводные камни наживеш с этой идеей...


 
Numark   (2006-12-26 17:10) [15]

> Elen ©   (26.12.06 16:56) [14]
Ну можно и так:

<...>
//определяем скорость.
fstval := i;
realval := 0;
countt := 0;
Timer1.Enabled := True;
//................................
wannarepeat:=true;
repeat
Application.ProcessMessages;
//тут идёт обработка, и начисление переменной i
until wannarepeat = false;
<...>
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(countt);
if countt = 60 then
begin
endval := i;
realval := endval - fstval;
countt := 0;
fstval := i;
end
else
Label1.Caption := "Скорость: "+IntToStr(realval)+" f/m";
end;
//interval = 1000

Но всё равно проблема осталась. realval всегда показывает 60.


 
Numark   (2006-12-26 17:11) [16]

P.S. все переменные - глобальные =)


 
icWasya ©   (2006-12-26 18:11) [17]

сделай так
var
 fstval , endval , realval : Double;

 fstval:= Now * 86400;

.... Timer1Timer(...
begin
...
endval := Now * 86400;

realval := endval - fstval;
...
end;

Label1.Caption := "Скорость: "+FloatToStr(realval)+" f/m";


 
Elen ©   (2006-12-27 07:49) [18]


> Но всё равно проблема осталась. realval всегда показывает
> 60.

Так может это и есть правильный результат? Я когда своими средствами из инета музон качаю у меня тоже скорость показывается одна и та же, хотя Опера скорость меняет.



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1166649649
Chort
2006-12-21 00:20
2007.01.14
В чем ошибка?


6-1155734845
VolanD666
2006-08-16 17:27
2007.01.14
Asynchronous socket error 10061


10-1128336974
Квэнди
2005-10-03 14:56
2007.01.14
Фиксирование строк в Excel


15-1166645169
IMHO
2006-12-20 23:06
2007.01.14
Покачать фильмы и сериалы


15-1167035433
IMHO
2006-12-25 11:30
2007.01.14
Москва, 1941-й год...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский