|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как заставить TimeToStr считать свое указанное время
Пример:
Я самостоятельно в 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
|
|||
|
|||
Дополнение:
Цитата:
|