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

Вниз

Как работать с TDataTime   Найти похожие ветки 

 
Олег1963   (2010-01-27 13:33) [0]

Здрвствуйте уважаемые Мастера!
Требуется такая процедурка:
На форме имеется два Edit"a. В одном должно быть показано реальное время, а в другой в несколько раз большее (точнее быстроидущее).
Как выводить реальное время понятно, а как быть со вторым?
Делаю так. Сохраняю заданное время в переменной BuffTime типа TDataTime. Выполняю Edit1.Text:=TimeToStr(BuffTime);
Как в этом буфере добавлять минуты, чтобы добавлялись по мере необходимости часы и сутки?
Нужно для производственной задачи (имитация течения времени для медленнотекущих процессов ).


 
Nucer   (2010-01-27 13:38) [1]

TDateTime - синоним Double, целая часть - дни. Чтобы добавить 24 часа, достаточно прибавить к значению единицу, 12 часов - 0.5 и т. д. =)
Плюс есть функции EncodeDate и EncodeTime, упрощающие процесс.

NowPlusMin := Now + EncodeTime(0, 1, 0, 0);


 
Ega23 ©   (2010-01-27 13:54) [2]

IncHour, IncMinute, IncSecond, IncMillisecond + F1


 
oleg1963lora   (2010-01-27 14:04) [3]

Спасибо Nucer. Кажется получается. Попробую поиграть.


 
oleg1963lora   (2010-01-27 14:06) [4]


> Ega23 ©   (27.01.10 13:54) [2]
> IncHour, IncMinute, IncSecond, IncMillisecond + F1

И за это большое спасибо!


 
Anatoly Podgoretsky ©   (2010-01-27 14:14) [5]


> Как выводить реальное время понятно, а как быть со вторым?

Одинаково, только в один нормальное подавать, а во второй быстроидущее/бегущее.


 
oleg1963lora   (2010-01-27 14:51) [6]


> Anatoly Podgoretsky ©  

Программу предполагается использовать для контроля и регистрации изменений температуры и влажности в теплицах. К реальному подключению программа не готова, поэтому я сделал 8 имитатров, подвязанных к таймеру.
Они имитируют колебания температуры в заданном пределе.
Реально измерения производятся примерно каждые 15 минут. Мне нужны "часы" идущие раз в десять быстрее, чтобы получать данные этих виртуальных датчиков, сохранять в таблицах и по желанию руководства строить пользовательский интерфейс.
Когда программа вчерне будет готова, я заменю имена переменных датчиков на реальные порты. Примерно так.


 
Jeer ©   (2010-01-27 14:57) [7]

Мда.. полная задница с мыслями, извини дорогой.

Уйди от времени и перейди к тактам.


 
Anatoly Podgoretsky ©   (2010-01-27 15:15) [8]

> oleg1963lora  (27.01.2010 14:51:06)  [6]

DateTime := Interval * 10


 
Anatoly Podgoretsky ©   (2010-01-27 15:16) [9]

DateTime := DateTime + Interval * 10


 
oleg1963lora   (2010-01-27 15:30) [10]

Господа ВСЕ ОТЛИЧНО! Прога отлично работает. За 5 минут пролетело больше 3-х суток. Спасибо!
> Уйди от времени и перейди к тактам.

Это к каким? Которые в БИОС указаны?!
Все. Пора уходить на Эльбрус! :)))


 
oleg1963lora   (2010-01-27 15:36) [11]

Вот что у меня получилось.

var DateStart,CurrDate : TDateTime;
    CurrentDate,CurrentTime,Speed{ускоритель} : TEdit;
procedure TForm1.Button1Click(Sender: TObject);
{Запуск процесса генерации, создания таблиц, установки первоначального времени}
begin
 DateStart:=InDate.Date;
 DateStart:=InTime.Time;
 DateCurr:=DateStart;
 CurrentDate.Text:=DateToStr(DateCurr);
 CurrentTime.Text:=TimeToStr(DateCurr);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    Timer1.Interval:=1000 div StrToInt(Speed.Text);
    DateCurr:=IncMinute(DateCurr,1);
    CurrentDate.Text:=DateToStr(DateCurr);
    CurrentTime.Text:=TimeToStr(DateCurr);
end;


 
Sergey13 ©   (2010-01-27 16:28) [12]

> [6] oleg1963lora   (27.01.10 14:51)
> Реально измерения производятся примерно каждые 15 минут.

Может я чего не понял, но почему при отладке нельзя делать "измерения" каждые 1.5 минуты? Или через любой другой промежуток времени? Или непременно должны часики рисоваться?


 
oleg1963lora   (2010-01-28 10:22) [13]


> Может я чего не понял, но почему при отладке нельзя делать
> "измерения" каждые 1.5 минуты?

Прибор аппаратно регистрирует температуру через 1 мин.
12:07 19 С
12:08 19 С
12:09 20 С
Реально измерения производятся скачиванием внутреннего архива прибора через 12 минут. Это обусловлено технологией производства. Задача состоит в том, их производит оператор нажатием кнопочки на приборе. Естесственно он не в состоянии опросить 17 датчиков одновременно. Возникает разброс по времени +-.
Моя задача слить данные в таблицы, потом как-то их выровнять по вертикали, т.е. если время в таблицах находится в определенном диапазоне (скажем от 12:06 до 12:09) принять их за одно измерение и вывести одной строкой в таблице Время:Датчики. Хотя как это время усреднять вопрос еще тот.
Получу виртуальные таблицы, суну их руководству - пусть сами репу чешут как это усреднять!


 
Sergey13 ©   (2010-01-28 11:04) [14]

> [13] oleg1963lora   (28.01.10 10:22)

Все равно не понятно с чем ты борешься. Что является первостепенной задачей? Нарисовать интерфейс пользователя? Синхронизировать приборы?
Если прибров пока в природе нет (как я понял), то что мешает просто нагенерить тестовых данных вагон и маленькую тележку для разработки интерфейса и прочей расчетной лабуды. Зачем заниматься адаптацией каких то "имитатров", которых потом выкинешь?

> Моя задача слить данные в таблицы
> Получу виртуальные таблицы

Прям какие то мифические таблицы в мифической СУБД? Формат приборных архивов известен, структура таблиц в твоей полной власти - в чем проблема то?
Можно например сделать справочник времени - таблица на 1440 записей с двумя полями, минута - диапазон.

> и по желанию руководства строить пользовательский интерфейс.
> суну их руководству - пусть сами репу чешут как это усреднять!

Немного пугает твоя вера в непогрешимость руководства. 8-)


 
oleg1963lora   (2010-01-28 11:51) [15]


> Все равно не понятно с чем ты борешься. Что является первостепенной
> задачей? Нарисовать интерфейс пользователя? Синхронизировать
> приборы?

Именно так. Приборы к черту пока
> Если прибров пока в природе нет (как я понял), то что мешает
> просто нагенерить тестовых данных вагон и маленькую тележку
> для разработки интерфейса и прочей расчетной лабуды.

Именно это я и сделал. Мне начальник вообще сказал "Да нарисуй от руки в Excel несколько табличек и работай с ними. В смысле выравнивай". Как ты себе это иредставляешь? Не может температура в теплице колебаться от 27 до 45 градусов в течении суток! Равно как и влажность. Если же может, то урожаю... Поэтому я сделал несколько генераторов, у каждого из которых я задаю опорный уровень и уровень разбороса (напр. 28 С +-5 С)


 
Sergey13 ©   (2010-01-28 12:00) [16]

> [15] oleg1963lora   (28.01.10 11:51)

> Как ты себе это иредставляешь?

Я пока ничего не представляю. Мне просто жалко твои огурцы. Ты же в них как партизан. 15 постов уже есть, но пока неизвестна ни используемая СУБД ни структура твоих "виртуальных таблиц" и вообще пока ничего неизвестно. Что является текущей поблемой? Ты не моежшь записать данные в таблицу? Ты не можешь отсортировать ее по времени? Что конкретно? Исключая машину времени из первого поста. 8-)


 
Anatoly Podgoretsky ©   (2010-01-28 12:01) [17]

> oleg1963lora  (28.01.2010 11:51:15)  [15]

Вот начальство и подумало, что с ними делать, выравнивай.


 
Jeer ©   (2010-01-28 12:08) [18]

Неправильной дорогой идешь, товарищ.

Ну нельзя вот так с потолка взять и приравнивать температуры от 17 датчиков, измеренные в разное время к одному времени.
Хотя бы методически это неверно.

К примеру, имеем 17 датчиков, измерение температуры проводится последовательно раз в минуту. В таком случае период между измерениями одного датчика равен 17 мин.
После опроса последнего датчика ( зевершения одного цикла измерений) делается интерполяция температур для всех остальных датчиков, приведенная ко времени последнего измерения.

Моделирование всего это процесса производится путем задания нач. значений и тенденций на каждом датчике.
Моделирование производится в относительном времени ( как раз те самые такты измерений, о которых я выше говорил ).
Для симуляции в ускоренном масштабе требуется таймер, в котором устанавливается время срабатывания:
- для реала 1 мин
- для ускорения, 1 сек, например.

И все.
Ну еще динамические свойства имитаторов датчиков необходимо корректировать.

"Это наша дорога" (С)


 
Плохиш ©   (2010-01-28 12:26) [19]


> oleg1963lora   (28.01.10 11:51) [15]

> Мне начальник вообще сказал "Да нарисуй от руки в Excel
> несколько табличек и работай с ними. В смысле выравнивай".
>  Как ты себе это иредставляешь?

Неплохо. И с начальником подескутировал, пары спустил, и задница цела.


 
oleg1963lora   (2010-01-28 13:35) [20]

Удалено модератором


 
Sergey13 ©   (2010-01-28 13:53) [21]

> [20] oleg1963lora   (28.01.10 13:35)
> Вообще цель этой программы, насколько я понимаю, состоит
> в том, чтобы с этими данными можно было обращаться в суд
> на недопоставку тепла местной ТЭЦ.

Смешно не правда ли смешно-смешно И вам смешно и даже мне. (с) В.С. Высоцкий



Страницы: 1 вся ветка

Текущий архив: 2010.03.28;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.017 c
3-1237159280
VoznikVopros
2009-03-16 02:21
2010.03.28
Как поместить формы, которые взаимодействуют с БД, в DLL?


2-1264666767
Вася
2010-01-28 11:19
2010.03.28
аналог Set Of


2-1264694075
Jimmy
2010-01-28 18:54
2010.03.28
Задержка


15-1262970823
Кто б сомневался
2010-01-08 20:13
2010.03.28
Уровень жизни рейтинг International Living.


3-1237289266
Yurikon
2009-03-17 14:27
2010.03.28
Количество записей в TADOTable