Function verifDate(s:string):boolean;
var boolJ,boolM,boolA:boolean; intJ,intM,intA,errJ,errM,errA:integer;
begin
if (length(s)=8) and (s[3]='-') and (s[6]='-')
then begin
val(copy(s,1,2),intJ,errJ);
val(copy(s,4,2),intM,errM);
val(copy(s,7,2),intA,errA);
end
else begin
writeln('La date "',s,'" n''est pas correcte');
writeln('La date doit etre sous la forme JJ-MM-AA');
result:=false;
exit;
end;
if (errJ=0) and (errM=0) and (errA=0) // JJ)
then begin
boolJ:=(intJ>=1) and (intJ<=31);
boolM:=(intM>=1) and (intM<=12);
boolA:=(intA>=0) and (intA<=99); // toujours vrai puisque errA=0
end
else begin
writeln('La date "',s,'" n''est pas correcte');
writeln('JJ, MM, et AA doivent etre des entiers valides');
result:=false;
exit;
end;
if boolJ and boolM and boolA
then begin
case intM of
1,3,5,7,8,10,12: result:=(intJ<=31); // toujours vrai puisque boolJ
2: result:=(intJ<=29) and ((intA mod 4=0) or (intJ<>29));
4,6,9,11: result:=(intJ<=30);
end;
end
else result:=false;
if result then writeln('La date "',s,'" est correcte')
else begin
writeln('La date "',s,'" n''est pas correcte');
writeln('JJ, MM, et AA ne peuvent pas etre quelconques');
end;
end;
Répondre