Pascal Unterbereichstyp Wertebereich wird überschritten

Diskutiere und helfe bei Pascal Unterbereichstyp Wertebereich wird überschritten im Bereich Software & Treiber im SysProfile Forum bei einer Lösung; Hallo, ich bin gerade bei den Unterbereichstypen von Pascal. Ich habe folgendes Programm geschrieben, welches nach der eingabe des aktuellen Datums,... Discussion in 'Software & Treiber' started by Jack Daniel, Oct 1, 2009.

  1. Jack Daniel
    Jack Daniel BIOS-Schreiber
    Joined:
    Jan 8, 2009
    Messages:
    646
    Likes Received:
    20
    Name:
    Daniel
    1. SysProfile:
    91764
    2. SysProfile:
    116640

    Hallo, ich bin gerade bei den Unterbereichstypen von Pascal. Ich habe folgendes Programm geschrieben, welches nach der eingabe des aktuellen Datums, den nächsten Tag ausgibt.

    Mein Problem ist allerdings, wenn ich den Wertebereich (z.B. Monat) überschreite, läuft das Programm ohne Fehlermeldung weiter. obwohl ich das Maximum angegeben habe:

    Code:
    var
      Tag   : 1..31;
      Monat : 1..12;
      Jahr  : 2001..2999;
      Letzt : 28..31;
    
    Sollte nicht eigentlich eine Meldung wie "Value Ranger Error" erscheinen?

    Hier mein Programm:

    Code:
    (* Dieses Programm zeigt das Datum des nachfolgenden Tages an.
     *
     * Datum: 01.10.2009                Autor: Jack Daniel
     *)
    
    program Datum;
    {$APPTYPE CONSOLE}
    uses
      sysutils;
    
    var
      Tag   : 1..31;
      Monat : 1..12;
      Jahr  : 2001..2999;
      Letzt : 28..31;
    
    begin
      write('Geben Sie das aktuelle Datum in Form dreier Zahl ein! ');
      readln(Tag, Monat, Jahr);
    
      case (Monat) of
        1, 3, 5, 7, 8, 10, 12 : Letzt := 31;
        4, 6, 9, 11           : Letzt := 30;
        2                     : if (Jahr Mod 4 = 0) then
                                  Letzt := 29
                                else Letzt := 28;
      end; (* of case *)
    
      if (Tag = Letzt) then // Wenn der Tag gleich dem Wert "Letzt" entspricht, ist das Monatsende erreicht.
      begin
        Tag := 1;
        if (Monat = 12) then
        begin
          Monat := 1;
          Jahr := Jahr + 1
        end
        else Monat := Monat + 1;
      end
      else Tag := (Tag + 1);
    
      writeln(' Der n„chste Tag ist lautet: ', Tag, '.', Monat, '.', Jahr);
    
      readln;
    end.
    Gruß Jack Daniel
     
    #1 Jack Daniel, Oct 1, 2009
Thema:

Pascal Unterbereichstyp Wertebereich wird überschritten

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice