Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Постановка задачи и ее реализация




В данном примере реализуем следующие задачи:

  • Получение данных о текущем времени от сервера.
  • Раскодирование этой информации.
  • Установка текущего времени в соответствии с полученными сведениями.

Для реализации поставленных задач создадим новый проект, поместим в форму компонент NMDateTime и кнопку Button. Из свойств первого изменим Host на time-a.nist.gov. Остальные параметры могут оставаться установленными по умолчанию. Сделайте на кнопке надпись "Установить время". Два раза щелкнув по ней в режиме проектирования, откройте заготовку для обработчика события Buttoniciick. В него следует вписать код, приведенный в листинге П1.1.

Листинг П1.1. Реализация процесса получения и установки времени

procedure TForml.ButtonlClick(Sender: TObject);

var

newdatetime, localdatetime: tsystemtime;

currentzoneinfо: TTimeZonelnformation;

tmpstring: string;

timebefore, timeafter, delta: tdatetime;

begin

timebefore:=now;

tmpstring:=NMDayTimel.DayTimeStr;

delta:=(timeafter-timebefore)/2;

if Copy(tmpstring,29,1)='0' then

begin

newdatetime.wYear:=strtoint('20'+copy(tmpstring,8,2));

newdatetime.wMonth:=strtoint(copy(tmpstring,11,2));

newdatetime.wDay:=strtoint(copy(tmpstring,14,2));

newdatetime.wHour:=strtoint(copy(tmpstring,17,2});

newdatetime.wMinute:=strtoint(copy(tmpstring,20,2));

newdatetime.wSecond:=(strtoint(copy(timetostr(delta),7,2))+

strtoint(copy(tmpstring,23,2))); GetTimeZonelnformation(currentzoneinfo); SystemTimeToTzSpecificLocalTime(@currentzoneinfo,

newdatetime,localdatetime); SetLocalTime(localdatetime);

end;

end;

Рассмотрим несколько пояснений к приведенному коду.

Прежде чем получать данные от сервера, нужно выяснить текущее время, чтобы затем найти время выполнения запроса. После обращения к свойству NMDayTimel. DayTimeStr в переменную tmpstring помешается информация, полученная от сервера. Вслед за выполнением запроса, опять находится текущее время, а также вычисляется разность между ним и начальным. Половина этой разности и будет составлять поправку на осуществление запроса.

После того как искомая информация получена, необходимо ее декодировать и поместить в запись newdatetime. Поскольку сервер предоставляет время по международным стандартам, то также нужно сделать поправку на часовой пояс. Это осуществляет функция SystemTimeToTzSpecificLocalTime, вызываемая через Windows API.

Последним этапом является вызов также API-функции setLocaiTime, выполняющей установку текущего времени.

Если данная программа выполняется на компьютере, с неустойчивым подсоединением к сети Интернет, то в ней следует обработать возникновение исключительных ситуаций.

 

Обмен сообщениями между компонентами сетевых программ

На вкладке FastNetимеется два компонента, специально предназначенных для обмена сообщения и файлами в масштабах локальных и глобальных сетей: NMMsg и NMMsgServ, пиктограммы которых представлены на рис. П1.2.

Рис. П1.2. Компоненты NMMsg и NMMsgServ

Как вы уже, наверное, догадались, функциональная нагрузка по установлению соединения и обработке внешних подключений разделена между этими компонентами.

 

Компонент NMMsg




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 375; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.