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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
1-1088220292
Dr.Karter
2004-06-26 07:24
2004.07.11
MDIChild


4-1086175357
eRoR_rrr
2004-06-02 15:22
2004.07.11
ProgresBar при копировании


14-1087476394
Рамиль
2004-06-17 16:46
2004.07.11
Software Update Services


14-1087808659
_student
2004-06-21 13:04
2004.07.11
С помощью Asembler надо вытащить системную дату


4-1086172913
_гость
2004-06-02 14:41
2004.07.11
при нажатии CTRL+C