Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 85
1

Реализация течения времени. Виртуальное время. Замедление и ускорение относительно реального времени.

24.06.2011, 13:34. Показов 4888. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Опишите, пожалуйста, подробнее как реализовать течение времени в программе. То есть, на главном окне отображается текст, с текущей датой (без времени). Далее, спустя несколько секунд, (к примеру, 3) дата меняется, например, с 1 января на 2 января 2011 года.
Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2011, 13:34
Ответы с готовыми решениями:

Описать процедуру, которая вычисляет время, прошедшее от времени t1 до времени t2
помогите пожалуйста описать процедуру интервал (d,t12,t1), которая вычисляет время d, прошедшее от...

Построение динамических графиков в режиме реального времени
Здравствуйте,как можно построить график(тренд) такого разностного уравнения(уравнение прилагается)...

Ускорение времени
всем привет.интересует такая проблема.есть программа,в которой для совершения операции требуется...

Одновременный опрос выбранных портов ПК, синхронизация в режиме реального времени
Написать программу. Одновременный опрос выбранных портов пк. Синхронизация в режиме реального...

4
3218 / 2361 / 540
Регистрация: 11.09.2009
Сообщений: 8,604
24.06.2011, 14:53 2
Delorthe, насколько я понял, вам нужно отображать не реальное время встроенных часов, а условное (ускоренное), причём только дату?
Можно использовать компонент Timer. Поставить ему Interval = 3000 (3 секунды), в событии OnTimer менять дату. Дату хранить в переменной типа TDateTime, прибавлять к ней константу того же типа, равную одному дню. Для вывода использовать функцию DateToStr.
0
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 85
24.06.2011, 15:24  [ТС] 3
i8085, в принципе, понятно. Но как реализовать на практике?
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
24.06.2011, 16:54 4
Написал на эту тему демонстрационный пример. Пользователь вводит коэффициент ускорения/замедления виртуального времени, задаёт отслеживаемый интервал и запускает таймер. - Программа показывает процесс течения реального и виртуального времени.
Если коэффициент больше единицы - виртуальное время ускоряется. Например, при значении коэффициента = 10 виртуальное время ускоряется, соответственно в 10 раз.
Если коэффициент меньше единицы - виртуальное время замедляется. При коэффициенте = 0,1 виртуальное время замедляется в 10 раз.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
var
  //Начальный момент времени.
  TimeStart : TTime = 0;
  //Реальное время, прошедшее от начального момента.
  TimeCur : TTime = 0;
  //Виртуальное время, прошедшее от начального момента.
  TimeCurV : TTime = 0;
  //Отслеживаемый реальный интервал.
  Period : TTime = 0;
  //Отслеживаемый витруальный интервал.
  PeriodV : TTime = 0;
  //Коэффициент скорости течения виртуального времени относительно реального времени.
  //Speed = <Интервал виртуального времени> / <Интервал реального времени>.
  Speed : Extended = 0;
 
//Запуск/перезапуск таймера.
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Выключаем таймер.
  Timer1.Enabled := False;
  //Интервал таймера.
  //Timer1.Interval := 200; //200 миллисекунд.
 
  //Коэффициент скорости течения виртуального времени.
  Speed := StrToFloatDef(Edit2.Text, 0);
  if Speed <= 0 then begin
    ShowMessage(
      'Коэффициент скорости течения времени должен быть положительным числом.'
      + #10 + 'Действие отменено.'
    );
    Exit;
  end;
  //Значение отслеживаемого периода виртуального времени, заданное в секундах,
  //переводим в формат данных типа TTime (TDateTime).
  PeriodV := StrToIntDef(Edit1.Text, 0) / (24 * 60 * 60);
  if PeriodV < 0 then begin
    ShowMessage(
      'Отслеживаемый период должен быть неотрицательным числом.'
      + #10 + 'Действие отменено.'
    );
    Exit;
  end;
  //Значение отслеживаемого периода реального времени.
  Period := PeriodV / Speed;
 
  //Показываем нулевые значения времени.
  Label1.Caption := FormatDateTime('hh:nn:ss', 0);
  Label2.Caption := FormatDateTime('hh:nn:ss', 0);
  //Определяем текущее время.
  TimeStart := Time;
  //Включаем таймер.
  Timer1.Enabled := True;
end;
 
//Останов таймера.
procedure TForm1.Button2Click(Sender: TObject);
begin
  //Выключаем таймер.
  Timer1.Enabled := False;
  //Показываем нулевые значения времени.
  Label1.Caption := FormatDateTime('hh:nn:ss', 0);
  Label2.Caption := FormatDateTime('hh:nn:ss', 0);
end;
 
//Обработка тиков таймера.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //Узнаём сколько прошло реального времени.
  TimeCur := Time - TimeStart;
  //Узнаём сколько прошло виртуального времени.
  TimeCurV := TimeCur * Speed;
 
  //Отслеживаем момент, когда истечёт заданный виртуальный интервал.
  if TimeCurV >= PeriodV then begin
    //Останавливаем таймер.
    Timer1.Enabled := False;
    //Показываем конечное значение реального времени.
    Label1.Caption := FormatDateTime('hh:nn:ss', Period);
    //Показываем конечное значение виртуального времени.
    Label2.Caption := FormatDateTime('hh:nn:ss', PeriodV);
    //Сообщение.
    ShowMessage('Заданный период истёк.');
    //Выходим.
    Exit;
  end;
 
  //Показыавем сколько реального времени прошло.
  Label1.Caption := FormatDateTime('hh:nn:ss', TimeCur);
  //Показыавем сколько виртуального времени прошло.
  Label2.Caption := FormatDateTime('hh:nn:ss', TimeCurV);
end;
На скриншотах - ускоренное и замедленное течение виртуального времени.
Миниатюры
Реализация течения времени. Виртуальное время. Замедление и ускорение относительно реального времени.   Реализация течения времени. Виртуальное время. Замедление и ускорение относительно реального времени.  
Вложения
Тип файла: rar Виртуальное время.rar (172.0 Кб, 67 просмотров)
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
25.08.2012, 19:17 5
хорошая прога!
0
25.08.2012, 19:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2012, 19:17
Помогаю со студенческими работами здесь

Замедление работы время от времени на нескольких ПК
Некоторые компьютеры стали медленно работать. Примерно общее: Долгое включение с утра час или даже...

Как из реального времени вычесть время из базы
Кароче, в новостях нужно выводить время типа &quot;30 sec ago , 5 min ago и т.д.&quot; в базу к новости...

Как выводить время в режиме реального времени?
Начал работать с Django. Создаем простую страничку,где выводиться текущее время и дата, время...

DS1302 часы реального времени форматирование времени
Здравствуйте. Возникла необходимость в форматировании времени каким образом можно сделать так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru