home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Test(Output); (* Autor: M. Eisner *)
-
- TYPE CharSet = SET OF CHAR;
-
- VAR Kb: FILE OF CHAR; { <-- DATEI FÜR ZEICHENWEISES EINLESEN }
- IntegerValue: INTEGER;
-
- { LIEST INTEGERWERT UND AKZEPTIERT EINGABEZEICHEN NUR, WENN }
- { ZUM ZEICHENSATZ GEHÖRIG, BZW. WERT, WENN INNERHALB DER BE- }
- { REICHSGRENZEN FÜR INTEGER: }
- PROCEDURE IntegerRead (VAR IntValue: INTEGER);
- CONST
- IntStrMaxLng = 6; { REICHT FÜR 5-STELLIGE ZAHL + VORZEICHEN }
- IntChars = CharSet['+','-','0'..'9']; { ZEICHENSATZ }
- VAR
- IntStr: LSTRING(IntStrMaxLng);
- C: CHAR;
- BEGIN
- IntStr.Len := 0;
- REPEAT
- REPEAT { EINLESEN, BIS NICHT-LEERZEICHEN AUFTRITT }
- Get(Kb)
- UNTIL Kb^ <> Chr(0);
- C := Kb^;
- IF C = Chr(13) THEN { ABBRECHEN, WENN "RETURN" AUFTRITT }
- BREAK;
- IF C IN IntChars THEN { ZUGEHÖRIGKEIT ZUM ZEICHENS. PRÜFEN }
- BEGIN Write(Output,C); Concat(IntStr,C); END
- ELSE Write(Output,Chr(7)) { IM FEHLERFALL ALARM }
- UNTIL Ord(IntStr.Len) = IntStrMaxLng;
- IF IntStr.Len = 0 THEN { BEI LEEREINGABE WERT 0 ERZEUGEN }
- BEGIN
- IntValue := 0;
- RETURN { PROGRAMMAUSGANG BEI WERT 0 }
- END;
- IF NOT DECODE(IntStr,IntValue) THEN
- BEGIN { FEHLERFALL BEI UEBERSCHREITEN DER BEREICHSGRENZEN }
- Write(Output,Chr(7),Chr(13),' ':Ord(IntStr.Len));
- Write(Output,Chr(13)); { EINGABEECHO LÖSCHEN }
- IntegerRead(IntValue) { EINGABE WIEDERHOLEN }
- END
- END;
-
- BEGIN
- Assign(Kb,'User'); { INITIALISIEREN DES KEYBOARD }
- Kb.Mode := TERMINAL; { <-- DATEIDEKLARATION FÜR }
- { ZEICHENWEISEN EINGABEMODUS ! }
- ReSet(Kb);
- WriteLn(Output,Chr(25),' ');
- IntegerRead(IntegerValue);
- WriteLn(Output);
- WriteLn(Output,'Eingelesen wurde: ',IntegerValue:5)
- END.