Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 14:54   #1
Sirk0
 
Регистрация: 16.05.2009
Сообщений: 6
Счастье

Не знаю как вытянуть системное время для такой задачки
"Расчет времени до начала открытия игр
ЕВРО 2012. Программа рассчитывает количество дней, часов, минут, секунд от текущего времени (системное время ) до начала открытия игр ЕВРО 2012
Обновляется ежесекундно"

заранее благодарен

это правильно?

Код:
var Time:Tdatetime;
begin
Time:=now();
label1.Caption:=FormatDatetime('hh:mm:ss',Time);
end;

Последний раз редактировалось Stilet; 21.05.2009 в 11:16.
Sirk0 вне форума Ответить с цитированием
Старый 16.05.2009, 21:09   #2
HoLToFF
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 58
По умолчанию

Сообщите дату и время начала игр ЕВРО 2012
HoLToFF вне форума Ответить с цитированием
Старый 16.05.2009, 21:24   #3
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

Код:
label1.caption:='{тут дата открытия}' - floattostr(time)
П.С. вродь правильно написал
beemoto вне форума Ответить с цитированием
Старый 18.05.2009, 00:23   #4
Sirk0
 
Регистрация: 16.05.2009
Сообщений: 6
По умолчанию

К сожалению дату и время начала ЕВРО-2012 сам ещё не знаю
вот сижу с книжечками, потихоньку вьезжаю (раньше опыта работы с Delphi не было)
но всёравно никак немогу понять как осуществляется определение текущего времени (системного)

неужели только этой строчкой?
Time:=now();
Sirk0 вне форума Ответить с цитированием
Старый 18.05.2009, 00:47   #5
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
неужели только этой строчкой?
Time:=now();
Time и Now - это функции из модуля SysUtils. Они возвращают системное время.
Такая запись Time:=now(); является грубой ошибкой. Вы пытаетесь присвоить результату одной функции результат другой.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 18.05.2009, 01:03   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Такая запись Time:=now(); является грубой ошибкой. Вы пытаетесь присвоить результату одной функции результат другой.
Не совсем... Здесь "Time" уже не функция - оно объявлено как переменная типа "TDateTime"... Тут всё правильно...

Хотя действительно, называть переменные именами функций "Не хорошо" (С)...

Если есть переменная с именем функции, то для вызова одноимённой функции надо указывать сначала модуль...
То есть в том коде можно было написать так:
Код:
Time:=SysUtils.Time; // (вместо "Time:=Now();")
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 18.05.2009, 01:16   #7
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

вобще то дата/время хранится как Float где целая часть = количеству дней, дробная часть - часы, минуты, секунды.. от от этого можна и оттолкнуться.. узнаешь дату и время евро 2012 пихаешь переменную типа TDateTime и отнимаешь текущее дату и время.. разница - это и есть то сколько осталося..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 18.05.2009, 21:48   #8
Sirk0
 
Регистрация: 16.05.2009
Сообщений: 6
Лампочка

ну, во-первых спасибо за то, что откликнулись!
ну а во-вторых, как я уже писал, я не сильно пока понимаю даный язык програмирования (я как бы понимаю о чём вы говорите, но как это осуществить пока, увы, не знаю(((

Начал я с того, как узнать текущее СИСТЕМНОЕ время и дату.
Вот такой код у меня полностью оказался работоспособным
Код:
procedure TForm1.Label1Click(Sender: TObject);
begin
     today := Now;
     label1.Caption:=('День = '+DateToStr(today));

end;
procedure TForm1.Label2Click(Sender: TObject);
begin
     today := Now;
     label2.Caption:=('Время = '+TimeToStr(today));
end;

end.
но вот проблемка, как сделать так, чтобы он обновлялся ЕЖЕСЕКУНДНО???

А вот когда прописываю Time:=SysUtils.Time; , то время выдаёт правильно, а вот дата не та.

Последний раз редактировалось Sirk0; 18.05.2009 в 21:55.
Sirk0 вне форума Ответить с цитированием
Старый 18.05.2009, 21:53   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Таймером...

Вкладка "System" компонент "Timer"...

Если в свойстве "Timer1.Interval" оставить 1000, то как раз будет раз в секунду...



Кстати, для чего такая "двойная" запись
Код:
Today:=Now;
Label1.Caption:=('День = '+DateToStr(Today));
Идея-то, конечно, правильная, но тут можно писать сразу:
Код:
Label1.Caption:=('День = '+DateToStr(Now));
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 18.05.2009 в 21:59.
DomiNick вне форума Ответить с цитированием
Старый 19.05.2009, 00:19   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Это из книги Архангельского :
Цитата:
При чтении Date надо учитывать тип этого свойства — TDateTime, представляющий собой число с плавающей запятой, целая часть которого содержит число дней, отсчитанное от некоторого начала календаря, а дробная часть равна части 24-часового дня, т.е. характеризует время и не относится к дате. Для 32-разрядных версий Delphi за начало календаря принята дата 12/30/1899 00 часов.
Если предположить начало ЧМ FIFA 2010 - 01.07.2010 года, то нетрудно
вычислить значения дат.
Сегодняшний день (18.05.2009 г.) соответствует Data_DayNow =
[(2009 - 1900) * 365] //кол-во дней в обыч. году
+ [round (2009 - 1900) / 4 ] // дополн. + высокос. года
+ 31 + 28 + 31 + 30 + 18 // дни этого года помесячно
+ 1 // 31 дек. 1900 года
{ всего получаем 39951.}
Аналогично для начала ЧМ - Data_DayStart = 40360 (cоотв. 01.07.2010 г.)
И сам код :
Код:
var
  Form1: TForm1;
  Data_DayNow,Data_DayStart: TDateTime;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
  Data_DayNow:= 39951.0;
  Data_DayStart:= 40360.0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption:= ('До начала FIFA 2010 = '
                     + FloatToStr(Data_DayStart - Data_DayNow)
                      + ' дней ');
end;

end.
Ну а время проще - брать разницу между 24:00:00 и текущим Now().
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 19.05.2009 в 00:22.
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текущее время Aндрей Помощь студентам 1 08.05.2009 14:01
Системное время Demien Общие вопросы Delphi 7 09.04.2009 12:36
Как сделать так, чтобы в TLabel отображались текущее системное время? Bill Gates Общие вопросы Delphi 3 03.01.2008 01:12
Системное время Terran Общие вопросы Delphi 5 02.01.2008 20:12
Текущее время Greyglass Microsoft Office Excel 4 22.11.2007 13:25