Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 5710 В разделе
Programming
от November 27th, 2013,
В подшивках: Lazarus, Pascal
На самом деле за вас уже все сделали. Дело в том, что на днях мне понадобилось доработать прошивку на настенных часах и управляющую программу чтобы она всякую хрень в память не писала, а делала что велено 🙂
Качаем нашу самую любимую библиотеку для работы со всем сетевым Synapse и распаковываем lib в директорию своей программы (ну можно и переименовать, если не хотите кучу барахла всякого в одной директории). Подключаете директорию к проекту (делается в настройках проекта) и теперь можно писать код!
function get_ntp(): TDateTime;
var
NTPClient: TSNTPSend;
NTPResult, Belt: TDateTime;
begin
with form1 do
begin
NTPClient := TSNTPSend.Create;
NTPClient.TargetHost := Edit2.Text;
NTPClient.GetNTP;
NTPResult := NTPClient.NTPTime;
if StrToInt(Edit3.Text) >= 0 then
begin
Belt := EncodeTime(StrToInt(Edit3.Text), 0, 0, 0);
NTPResult := NTPResult + Belt;
end
else
begin
Belt := EncodeTime(abs(StrToInt(Edit3.Text)), 0, 0, 0);
NTPResult := NTPResult - Belt;
end;
end;
Result:=NTPResult;
end;
Этой функции ничего кормить не надо. Однако, это неправильно 🙂 Вы можете переписать ее, чтобы передавать ей 2 параметра: сервер (у меня Edit2.Text) и временной сдвиг (часовой пояс, Edit3.Text). После этого и with form1 do убрать можно будет 😉
Ну а потом эти значения можно использовать, например, так:
procedure TForm1.Button4Click(Sender: TObject); begin ShowMessage(DateTimeToStr(get_ntp())); end;
Или так:
var mydatetime: TDateTime;
...
mydatetime:=get_ntp();
ShowMessage(FormatDateTime('dd', mydatetime))+'.'+
FormatDateTime('mm', mydatetime))+'.20'+
FormatDateTime('yy', mydatetime)));
Рабочий код можно посмотреть в репозитории, который я вынес из 2 других схожих проектов https://git.blindage.org/21h/bluetooth-clock-sync.
Fortune cookie: * Overfiend whacks one of the TODO items off the list < joshk> whacking something else now? < Overfiend> in a manner of speaking :) -- in #debian-devel
Leave a Reply