Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

Как работать с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.005 c
15-1262727024
Юрий
2010-01-06 00:30
2010.03.28
С днем рождения ! 6 января 2010 среда


2-1264496780
Oleg196lora
2010-01-26 12:06
2010.03.28
Странность в работе try..except


15-1263145585
И. Павел
2010-01-10 20:46
2010.03.28
Установка драйвера видеокарты на Windows 7


2-1264011596
Sunktor
2010-01-20 21:19
2010.03.28
Пятое изображение для SpeedButton


15-1263142666
TUser
2010-01-10 19:57
2010.03.28
Письмо про СС в России ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский