Показать сообщение отдельно
  #6  
Старый 21.06.2017, 22:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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;
Ответить с цитированием