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 :
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
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;
.
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.
Partager