![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Пример:
Я самостоятельно в edit вбиваю нужное мне время и по нажатию на кнопку это время начинает идти самостоятельно. не используя системное время.!! |
|
#2
|
||||
|
||||
|
Инкрементом.
|
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Цитата:
А искать в интернет мне лень) |
|
#5
|
||||
|
||||
|
Можно и чисто по-ламерски, последовательным преобразованием
Код:
function itm(ds: string): string;
var
hour, min, sec: integer;
begin
hour:= StrToInt(ds[1] + ds[2]);
min:= StrToInt(ds[4] + ds[5]);
sec:= StrToInt(ds[7] + ds[8]) + 1;
if sec > 59 then
begin
sec:= 0;
Inc(min);
end;
if min > 59 then
begin
min:= 0;
Inc(hour);
end;
if hour > 23 then hour:= 0;
Result:= FormatDateTime('hh:mm:ss', EncodeTime(hour, min, sec, 0));
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text:= itm(Edit1.Text);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:= '00:00:00';
Timer1.Interval:= 1000;
Timer1.Enabled:= true;
end;З.Ы. Читал топик по-диагонали, не учёл сути вопроса, если через TimeToStr, то тогда можно так Код:
var tm: TDateTime; procedure TForm1.Timer1Timer(Sender: TObject); begin tm:= tm + 1/(24*3600); Edit1.Text:= TimeToStr(tm); end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:= '0:00:00'; tm:= StrToTime(Edit1.Text); Timer1.Interval:= 1000; Timer1.Enabled:= true; end; Последний раз редактировалось Alegun, 21.06.2017 в 22:08. |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Daniil (22.06.2017)
| ||
|
#6
|
|||
|
|||
|
Alegun, при таком коде будет потихоньку расползаться, т.к. TTimer точность имеет никакую. Я бы сделал примерно так:
Код:
type
TForm1 = class(TForm)
...
private
SystemInitTime : TDateTime;
MyInitTime : TDateTime;
end;
...
// Начинаем считать
procedure TForm1.Button1Click(Sender : TObject);
begin
MyInitTime := StrToTime(Edit1.Text);
SystemInitTime := Now;
Timer1.Enabled := True;
end;
// собс-но изменение значения
// вычисляем разницу системного времени между сейчас и началом отсчета и
// Добавляем ее к стартовому значению
procedure TForm1.Timer1Timer(Sender : TObject);
var
B : TDateTime;
begin
Timer1.Enabled := False;
Try
B := Now - SystemInitTime;
B := B + MyInitTime;
Edit1.Text := TimeToStr(B);
Finally
Timer1.Enabled := True;
End;
end; |
|
#7
|
|||
|
|||
|
Цитата:
Немного не так, есть время в edit1.Text:=(''TimeToStr(now) текущее время, время в edit1 отнимается или прибавляется к времени которое я указываю самостоятельно в edit2, получая ответ нужно начать отсчет от того времени которое получилось, нужно заставить те числа которые в ответе, продолжить идти. например:точное время 08:00:00- 01:00:00 отнимаю один час, получаем ответ в edit2=07:00:00 (вот как раз ответ и нужно заставить отсчитывать время дальше) |
|
#8
|
|||
|
|||
|
Цитата:
|
|
#9
|
||||
|
||||
|
Стоп, заданиё:
Цитата:
|
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Daniil (22.06.2017)
| ||
|
#10
|
|||
|
|||
|
Цитата:
и отсчет шел с нулей, в место нулей создал строковую переменную в которую записывался результат сложения действий с временем, переменную присвоил edit1!! Вообщем пример пригодился он рабочий!! СПАСИБО!! |