Problem mit LIMIT

hepo
2011-04-25
2011-04-26
  • hepo - 2011-04-25

    Hallo an die Runde!

    Ich habe ein Problem mit der LIMIT-Funktion zum Begrenzen eines Wertebereichs:
    Ich benutze diese Funktion, um den Wertebereich bei einer Eingabe zu limitieren. Die Eingangsvariable ist als BYTE deklariert, die Bedienung erfolgt mittels
    AUF-/AB- Tasten zwischen 0 und 9 (ich kann systembedingt die tollen Eingabemöglichkeiten auf der VISU nicht nutzen, darum werden schlicht 2 Tasten
    abgefragt).
    Mein Problem besteht nun darin, dass bei einer Beschränkung der unteren Grenze auf "0" der Wert dennoch unterschritten werden kann, und der Wert auf
    "9" (obere Grenze) springt. Das passiert tatsächlich immer nur bei einer Grenze "0", bei allen anderen Werten klappt das immer!
    Der Code für die beiden Tasten sieht so aus:

    CASE M_KEY OF ( Abfrage der Eingabetasten )
    1: X:= LIMIT(0, X + 1, 9); ( Aufwärtszähler )
    2: X:= LIMIT(0, X - 1, 9); ( Abwärtszähler )
    END_CASE

    Wie kann ich diesen Fehler abfangen?

    Grüße aus dem Alpenland!

     
  • gnassel - 2011-04-26

    Hallo Hepo,

    das Problem ist das vorzeichenlose Byte, denn

    0 - 1 = 255 und in deinem Fall oben auf 9 begrenzt.

    Wenn du SINT verwendest, funktioniert es.
    Oder du schreibst es so:

    IF M_KEY = 1 AND X < 9 THEN
    X:=X+1;
    END_IF
    IF M_KEY = 2 AND X > 0 THEN
    X:=X-1;
    END_IF

    Grüße
    Frank

     

Log in to post a comment.