Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Таймер.   Найти похожие ветки 

 
niko4543   (2004-06-25 14:15) [0]

Здравствуйте.
Помогите пожайлуста, мне нужен код такого рода.
Нужно с помощью таймера засечь на, ну скажем примерно 15 или 30 минут, и что бы пока течёт это время через каждые 30 сикунд делать какоето джействие.
Помогите пожайлуста срочно надо. Вроде просто а  у меня работает очень глючно.

Заранее спасибо.


 
Тимохов ©   (2004-06-25 14:16) [1]


> Вроде просто а  у меня работает очень глючно.

что то уже есть?
выкладывай


 
lion   (2004-06-25 14:20) [2]

сделай два таймера: один будет вырубать второй через 30 минут.
а первый через каждые 30 секунд будет делать то что надо


 
Anatoly Podgoretsky ©   (2004-06-25 14:21) [3]

Нет сначала твой код, а то вдруг сдублируем, будем виноваты не заслуженно.


 
Тимохов ©   (2004-06-25 14:22) [4]

или на обвинения в плагиате нарвемся


 
Anatoly Podgoretsky ©   (2004-06-25 14:32) [5]

Может и похуже, например на ЛМД


 
Delphin ©   (2004-06-25 15:02) [6]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ShowMessage("30 Seconds left");
Timer1.Enabled:=False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=30000;
end;

Что-нить вроде этого ?


 
GuAV ©   (2004-06-25 15:05) [7]

Delphin ©   (25.06.04 15:02) [6]
Оффтоп. См. внимательно сабж. См. также [4]-[5].


 
Delphin ©   (2004-06-25 15:08) [8]

Ой, немного поторопился ;)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
IF Timer2.Enabled Then
ShowMessage("30 Seconds left");
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=30000;  // 30 Sec.
Timer2.Interval:=1000*30*60 //30 Min.

end;

end.


 
GuAV ©   (2004-06-25 15:20) [9]


> Ой, немного поторопился ;)

Опять торопишься. "Не суетись под клиентом" (с)
И вообще: Нефиг отвечать. Пока авторской версии не будет можно только флудить и флеймить :)


 
Anatoly Podgoretsky ©   (2004-06-25 15:25) [10]

GuAV ©   (25.06.04 15:20) [9]
Флудить и флеймить не надо, просто пока ждем можно и поговорить.


 
nejest   (2004-06-25 16:22) [11]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if(i=30)then
 begin
  label1.Caption:="Время закончилось";
  Timer1.Enabled:=False;
 end
else
 begin
  label1.Caption:="Прошло "+IntToStr(i*30)+" секунд";
  i:=i+1;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
end;
У меня всё работает.


 
niko4543   (2004-06-26 06:56) [12]

Я делаю так.
var
 k:integer;
 k1:real;
begin
 Label2.Caption:=inttostr(time);
 secunda:=secunda+1;
 k1:=((((minuta*60)+secunda))*100)/Time;
 k:=round(k1);
 Gauge1.MaxValue:=Time*600;
 Gauge1.Progress:=k;
 If secunda=60 Then
   begin
     secunda:=0;
     minuta:=minuta+1;
   end;
 Label1.Caption:=IntToStr(minuta)+":"+IntToStr(secunda);
 If Time<=minuta Then
   begin
     ShowMessage("Отведённое время вышло");
     Timer1.Enabled:=False;
   end;
end;


Мне кажется это такя полная лажа, и работает неочень точно. Подскажите правельную реализацию этого вопроса.


 
KilkennyCat ©   (2004-06-26 10:49) [13]

Правильно кажется...
Зачем это -
var
k:integer;
k1:real;
?

можно ведь так:

Gauge1.Progress:=round(((((minuta*60)+secunda))*100)/Time);

зачем внутри таймера это -
Label2.Caption:=inttostr(time);
Gauge1.MaxValue:=Time*600;
, если Time не меняется? вынести за пределы обработчика таймера...

Получаем пока такое :

begin
secunda:=secunda+1;
Gauge1.Progress:=round(((((minuta*60)+secunda))*100)/Time);
If secunda=60 Then begin
 secunda:=0;
 minuta:=minuta+1;
end;
Label1.Caption:=IntToStr(minuta)+":"+IntToStr(secunda);
If Time<=minuta Then begin
 ShowMessage("Отведённое время вышло");
 Timer1.Enabled:=False;
end;
end;


 
KilkennyCat ©   (2004-06-26 11:08) [14]

и кстати, почему
Gauge1.MaxValue:=Time*600 ?
может быть так вернее
Gauge1.MaxValue:=Time*60 ?

тогда все проще:

begin
 Gauge1.Progress := Gauge1.Progress + 1;
 Label1.Caption:=IntToStr(trunc(Gauge1.Progress/60)+":"+IntToStr(Gauge1.Progress - (trunc(Gauge1.Progress/60))*60);
 If Gauge1.Progress = Gauge1.Max Then begin
   ShowMessage("Отведённое время вышло");
   Timer1.Enabled:=False;
 end;
end;


 
KilkennyCat ©   (2004-06-26 11:19) [15]

что касается точности - этот таймер сам по себе неточен



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

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
4-1085918432
Piter
2004-05-30 16:00
2004.07.11
Передача фокуса


3-1086780258
Navy
2004-06-09 15:24
2004.07.11
Немогу добавить запись.


1-1088003458
tria
2004-06-23 19:10
2004.07.11
Как сделать, чтобы вид окон под ХР не портился?


4-1085669956
Андрей2
2004-05-27 18:59
2004.07.11
Перехват чтения и записи фалов


1-1088591359
BiSido
2004-06-30 14:29
2004.07.11
Как поменять из верхнего регистра в нижний (русские буквы)? (+)





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