Bonjour à tous,

Je cherche à récupérer la date/heure courante via un serveur de temps. Pour cela, j'utilise le composant IdDayTime de la librairie Indy avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function GetDateHeureCourante : TDateTime;
var
  DateHeureStr : String;
  an, mois, jour, heure, minute, seconde : integer;
begin
  IdDayTime1.Host := 'time.nist.gov';
  IdDayTime1.Port := 13;
 
  DateHeureStr := Copy(IdDayTime1.DayTimeStr, 7, 17);
 
  an := 2000 + StrToInt(Copy(DateHeureStr, 1, 2));
  mois := StrToInt(Copy(DateHeureStr, 4, 2));
  jour := StrToInt(Copy(DateHeureStr, 7, 2));
  heure := StrToInt(Copy(DateHeureStr, 10, 2));
  minute := StrToInt(Copy(DateHeureStr, 13, 2));
  seconde := StrToInt(Copy(DateHeureStr, 16, 2));
 
  Result := EncodeDateTime(an, mois, jour, heure, minute, seconde, 0);
 
  IdDayTime1.Disconnect;
end;
La plupart du temps, cette fonction me renvoie bien la date/heure courante. Cependant, certaines fois, l'exécution de la fonction s'arrête au niveau de la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
DateHeureStr := Copy(IdDayTime1.DayTimeStr, 7, 17);
.
Je ne sais pas si cela est dû au fait que le serveur time.nist.gov ne réponde pas ou à autre chose.

Ma question est donc la suivante : existe-t-il un moyen pour que l'exécution du programme ne reste pas bloquée indéfiniment au niveau de la
ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
DateHeureStr := Copy(IdDayTime1.DayTimeStr, 7, 17);
?
Si oui, lequel ?

Merci d'avance de vos réponses.