Lors du développement d’applications, il est souvent nécessaire d’obtenir l’heure système actuelle. Même si l’an 2000 semble être derrière nous, nous devons encore faire attention à la manière dont nous gérons le timing dans nos applications nouvellement développées.
La page 89 de « Intégration - Compétences pratiques Delphi 4.0 » (ci-après dénommé « le livre ») présente spécifiquement deux méthodes pour obtenir l'heure système actuelle, mais les deux méthodes présentent des lacunes ou des erreurs, qui seront discutées ci-dessous.
La première méthode de ce livre consiste à utiliser la fonction Time() pour obtenir l'heure système actuelle, et le résultat renvoyé est une variable de type structure TDateTime. Par exemple:
PRécédure TForm1.Button2Click(Expéditeur : TObject);
var
DateHeure : TDateHeure ;
commencer
DateHeure :=Heure();
Légende :=DateToStr(DateTime)+' '+TimeToStr(DateTime);
fin;
Mais quelle que soit la date, le résultat est 99-12-30 xx:xx:xx. La date est évidemment erronée. En analysant l'aide de Delphi, Time() est utilisé pour renvoyer le "heure - heures, minutes et secondes" correct, c'est-à-dire TimeToStr (DateTime), et ne doit pas être utilisé pour renvoyer "date". En fait, la seule fonction système utilisée pour renvoyer des dates est Date.
Alors, qu'est-ce qui peut renvoyer l'heure, la minute, la seconde correcte et l'année, le mois et le jour corrects ? Vous pouvez utiliser la fonction Now, par exemple :
procédure TForm1.Button1Click(Expéditeur : TObject);
var
mon heure : TDateTime ;
commencer
monheure:=Maintenant;
Légende :=DateToStr(monheure)+' '+TimeToStr(monheure);
//Ou utilisez Caption directement := DateTimeToStr(Now);
fin;
Le format de date renvoyé par Now n'a que 2 chiffres pour l'année, c'est-à-dire que l'année 2000 est affichée sous la forme 00, ce qui semble insatisfaisant. De plus, Now et Time ne peuvent obtenir qu'une heure précise à la seconde près. temps précis au niveau de la milliseconde, vous pouvez utiliser la fonction API GetSystemTime, et son type TSystemTime correspondant est défini comme :
TSystemTime = enregistrement
wAnnée : Mot ;
wMois : Mot ;
wDayOfWeek : Mot ;
wJour : Mot ;
wHeure : Mot ;
wMinute : Mot ;
wDeuxième : Mot ;
wMillisecondes : Mot ;
fin;
Évidemment, sa structure peut également être utilisée de manière pratique dans la logique du programme pour former diverses valeurs de temps. L'utilisation de la fonction GetSystemTime présente donc de grands avantages. Cependant, l'utilisation de cette fonction dans le livre est erronée. En consultant l'aide du SDK Windows, on peut voir que le prototype de cette fonction est :
VOID GetSystemTime(LPSYSTEMTIME lpst), le pointeur de paramètre lpst obtient l'heure système, il peut donc être implémenté comme le segment de programme suivant :
procédure TForm1.Button3Click(Expéditeur : TObject);
var
SysTime : TsystemTime ;
commencer
GetSystemTime(SysTime);
Légende :=IntToStr(SysTime.wYear)+' '+IntToStr(SysTime.wMonth);
//si SysTime.wYear>2000 alors
//...Utiliser les différentes valeurs de temps obtenues dans la logique du programme
fin;
Sur la base de la discussion ci-dessus, il est plus pratique et plus flexible d'obtenir l'heure système actuelle à l'aide de la fonction GetSystemTime.