Saisie de l'heure

Fermé
firas scofield Messages postés 14 Date d'inscription dimanche 30 mars 2014 Statut Membre Dernière intervention 5 novembre 2016 - Modifié par firas scofield le 23/04/2014 à 08:53
 Profil bloqué - 23 avril 2014 à 12:58
bonjour
j'étais en train de résoudre un probleme pascal mais j'arrive pas a faire le saisie de l'heure.
en effet la valeur horaire a saisie doit etre de type chaine de caratctere et sous la forme suivante:
"hh:mm:ss"
j'ai essayé comme ça: ecrire('hh:mm:ss'), lire(hh,mm,ss) mais j'arrive pas
je demande votre aide car j'ai essayé une journée complété mais sans résultat.
s'il vous plait c'est très urgent

1 réponse

Profil bloqué
23 avril 2014 à 12:58
Salut

Si tu déclares :
var Heure : String;
Si l'utilisateur entre la chaine : 23:19:59
L'instruction :
ReadLn(HH, MM, SS);
renvoie l'erreur : Identificateur
HH non déclaré, ainsi on pense que le compilateur est assez doué de comprendre ce qu'on souhaite, ce qui n'est pas le cas.

Meme si on peut par un traitement spécifique décomposer une telle chaine, extraire les valeurs, nous nous voyons enfin de compte obligé d' encoder les valeurs pour former une valeure TDateTime valide, un tel choix est couteux et inutile.

Voici une solution plus au moins optimisée :

program Former_Heure;

var HH, MM, SS : Word;
Time : TDateTime;

begin

{ Attention, les valeurs saisies sont supposées
dans les limites de la formation des nombres sexagésimaux }

Write('Heure : 0 .. 23 : ');
ReadLn(HH);
Write('Minutes : 0 .. 59 : ');
ReadLn(MM);
Write('Secondes : 0 .. 59 : ');
ReadLn(SS);

Time := EncodeTime(HH, MM, SS, 00);

WriteLn;

WriteLn('L''heure saisie est : ', TimeToStr(Time));
ReadLn;
{ TODO -oUser -cConsole Main : placez le code ici }
end.
0