Timeserver v1.0.3

Description

Un programme ridiculement simple par rapport au service qu'il rend !
Se connecte à des serveurs de temps de type strate2 ( liste sur http://www.cru.fr/services/ntp/serveurs_francais ) et vous retourne la date et l'heure d'une horloge atomique.
Vous permet également de synchroniser votre PC avec l'heure atomique.
Projet basé sur le super article suivant : ftp://ftp-developpez.com/svaillant/delphi_datetime/svaillant-datetime.pdf

Source / Exemple :


Version     : 1.0.3
Date        : 08 Mars 2010

Micro Projet 03 - On utilise un composant Indy (TidSNTP) pour se connecter à un
serveur de temps de type strate 2 pour récupérer la date et l'heure provenant
d'une horloge atomique. Le composant bug dans les versions 6 et moins de Delphi,
pour y remédier il faut avoir au moins la version 9.0 des composants Indy. Il
faut avoir les droits d'administrateur pour changer l'heure et la date du PC.
===============================================================================}
unit f_main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient,
  IdSNTP, ExtCtrls;

type
  TTimeServ = class(TForm)
    SNTP: TIdSNTP;
    ListeServeur: TListBox;
    ServeurNameBox: TGroupBox;
    LabServeur: TLabel;
    LocalBox: TGroupBox;
    LabDateLocale: TLabel;
    LabHeureLocale: TLabel;
    ServeurBox: TGroupBox;
    LabDateServeur: TLabel;
    LabHeureServeur: TLabel;
    BtnSysTime: TButton;
    Timer: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure ListeServeurClick(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    procedure BtnSysTimeClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  TimeServ: TTimeServ;

implementation

{$R *.dfm}
{$R 'Resources\UAC_Manifest.RES'} // Pour avoir les droits d'administrateur

procedure TTimeServ.ListeServeurClick(Sender: TObject);
begin
// On affiche le nom du serveur sélectionné
 LabServeur.Caption := ListeServeur.Items[ListeServeur.ItemIndex];
// On déclare le nom du serveur au composant TidSNTP
 SNTP.Host := ListeServeur.Items[ListeServeur.ItemIndex];
end;

// Interval = 100 donc on  va exécuter cette routine 10 fois par seconde
procedure TTimeServ.TimerTimer(Sender: TObject);
var Date1 : TDateTime;
begin
// L'instant présent
 Date1 := Now;
// On affiche la date locale
 LabDateLocale.Caption := DateToStr(Date1);
// On affiche l'heure locale
 LabHeureLocale.Caption := TimeToStr(Date1);
// On affiche la date du serveur de temps
 LabDateServeur.Caption := DateToStr(SNTP.DateTime);
// On affiche l'heure du serveur de temps
 LabHeureServeur.Caption := TimeToStr(SNTP.DateTime);
end;

procedure TTimeServ.BtnSysTimeClick(Sender: TObject);
var SysTime : TSystemTime;
begin
// On utilise une fonction interne du composant pour changer l'heure locale
 SNTP.SyncTime;
end;

procedure TTimeServ.FormCreate(Sender: TObject);
begin
// Teste si "servers.txt" est présent dans le répertoire courant
if not FileExists(GetCurrentDir+'\servers.txt') then
 begin
// Si le fichier n'existe pas dans notre répertoire, on le signale
   ShowMessage('le fichier "servers.txt" n''est pas dans le répertoire');
// Et on met fin à l'application
   Application.Terminate;
 end
else
 begin
// On charge la liste des serveurs depuis le répertoire courant
  ListeServeur.Items.LoadFromFile(GetCurrentDir+'\servers.txt');
// On sélectionne le premier serveur de la liste
  ListeServeur.ItemIndex := 0;
// On affiche le nom du serveur sélectionné
  LabServeur.Caption := ListeServeur.Items[ListeServeur.ItemIndex];
// On déclare le nom du serveur au composant TidSNTP
  SNTP.Host := ListeServeur.Items[ListeServeur.ItemIndex];
  SNTP.Active := True;
 end;
end;

end.

Conclusion :


Toujours à l'heure juste maintenant :)

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.