• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

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

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Delphi Как Получить Дату Из Интернета И Установить Её Как Текущую Delphi

  • Автор темы Автор темы Sascha
  • Дата начала Дата начала

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,552
Баллы
155
Здравствуй, Дорогой читатель. Недавно один из пользователь задал мне вопрос:

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

C удовольствием разберу этот вопрос. Тем более когда-то давно я уже решал подобную задачу. Не судите строго код старый, возможно не самый оптимальной, но работает стабильно.

Задачу установки даты из интернета на компьютер я условно разделю на 3 подзадачи:

  1. Получить строку из интернета, содержащую дату
  2. Преобразовать полученную строку в нужный формат
  3. Установить дату на компьютер
Итак, приступим, все по порядку.

Получить текущую дату из интернета в Delphi.
Дату можно получить разными методами, например со страницы яндекса. Этот способ не очень удобный так как вместе с датой нам придется загружать много лишней информации, которую нам придется отделять. В своей программе я пошел другим путем. Я написал не большой php скрипт, который возвращает текущую дату и время в следующем формате «!25.05.2014№ %01:23:52?». Чтобы получить такой ответ нужно отправить get запрос следующего содержания -

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. В

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

это реализуется следующим образом:

Код:
buf := IdHTTP1.Get(http://fegorsk.ru/script/time.php?zapros=784');

Преобразовать строку в нужный формат.
Следующее, что нужно сделать – из полученной строки получить две переменные. Первая будет содержать дату, а вторая время. Делается это следующим образом:

Код:
Mdate := Copy(buf, Pos('!', buf) + 1, 10);
Mtime := Copy(buf, Pos('%', buf) + 1, 8);

Последнее, что осталось сделать – установить дату и время на компьютере с помощью команд Delphi. Об этом я уже рассказывал, но повторение как извесно – это хорошо…

Код:
ShellExecute(0, nil, pchar('cmd.exe'), pchar('/c time ' + Mtime), nil, SW_HIDE); // для изменения времени и
ShellExecute(0, nil, pchar('cmd.exe'), pchar('/c date ' + Mdate), nil, SW_HIDE); // для изменения даты

Вот и все, мы получили из интернета дату и время и установили их на компьютер.
 
Вы неисправимы ! Скопировали тупо код с другого ресурса и всё на этом. У начинающего по любому возникнут проблемы. Пишу рабочий полный код
Код:
uses
  ShellApi
..................................

procedure TForm1.Button1Click(Sender: TObject);
var
Mtime, buf , Mdate:string;
begin
buf := IdHTTP1.Get('http://fegorsk.ru/script/time.php?zapros=784');
Mdate := Copy(buf, Pos('!', buf) + 1, 10);
Mtime := Copy(buf, Pos('%', buf) + 1, 8);
ShellExecute(0, nil, pchar('cmd.exe'), pchar('/c date ' + Mdate), nil, SW_HIDE);  //для изменения времени 

ShellExecute(0, nil, pchar('cmd.exe'), pchar('/c date ' + Mdate), nil, SW_HIDE); // для изменения даты
end;
 
Последнее редактирование:
Вверх Снизу