home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 11 / csettest.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-09-08  |  1.9 KB  |  54 lines

  1. PROGRAM Test(Output);                     (* Autor: M. Eisner *)
  2.  
  3. TYPE  CharSet = SET OF CHAR;
  4.  
  5. VAR  Kb: FILE OF CHAR;  { <-- DATEI FÜR ZEICHENWEISES EINLESEN }
  6.      IntegerValue: INTEGER;
  7.  
  8. { LIEST INTEGERWERT UND AKZEPTIERT EINGABEZEICHEN NUR, WENN    }
  9. { ZUM ZEICHENSATZ GEHÖRIG, BZW. WERT, WENN INNERHALB DER BE-   }
  10. { REICHSGRENZEN FÜR INTEGER:                                   }
  11. PROCEDURE IntegerRead (VAR IntValue: INTEGER);
  12. CONST
  13.   IntStrMaxLng = 6;  { REICHT FÜR 5-STELLIGE ZAHL + VORZEICHEN }
  14.   IntChars = CharSet['+','-','0'..'9'];          { ZEICHENSATZ }
  15. VAR
  16.   IntStr: LSTRING(IntStrMaxLng);
  17.   C: CHAR;
  18. BEGIN
  19.   IntStr.Len := 0;
  20.   REPEAT
  21.     REPEAT          { EINLESEN, BIS NICHT-LEERZEICHEN AUFTRITT }
  22.       Get(Kb)
  23.     UNTIL Kb^ <> Chr(0);
  24.     C := Kb^;
  25.     IF C = Chr(13) THEN    { ABBRECHEN, WENN "RETURN" AUFTRITT }
  26.       BREAK;
  27.     IF C IN IntChars THEN { ZUGEHÖRIGKEIT ZUM ZEICHENS. PRÜFEN }
  28.       BEGIN  Write(Output,C);  Concat(IntStr,C);  END
  29.     ELSE Write(Output,Chr(7))            { IM FEHLERFALL ALARM }
  30.   UNTIL Ord(IntStr.Len) = IntStrMaxLng;
  31.   IF IntStr.Len = 0 THEN     { BEI LEEREINGABE WERT 0 ERZEUGEN }
  32.     BEGIN
  33.       IntValue := 0;
  34.       RETURN                      { PROGRAMMAUSGANG BEI WERT 0 }
  35.     END;
  36.   IF NOT DECODE(IntStr,IntValue) THEN
  37.     BEGIN  { FEHLERFALL BEI UEBERSCHREITEN DER BEREICHSGRENZEN }
  38.       Write(Output,Chr(7),Chr(13),' ':Ord(IntStr.Len));
  39.       Write(Output,Chr(13));             { EINGABEECHO LÖSCHEN }
  40.       IntegerRead(IntValue)              { EINGABE WIEDERHOLEN }
  41.     END
  42. END;
  43.  
  44. BEGIN
  45.   Assign(Kb,'User');        {     INITIALISIEREN DES KEYBOARD  }
  46.   Kb.Mode := TERMINAL;      { <-- DATEIDEKLARATION FÜR         }
  47.                             {     ZEICHENWEISEN EINGABEMODUS ! }
  48.   ReSet(Kb);
  49.   WriteLn(Output,Chr(25),' ');
  50.   IntegerRead(IntegerValue);
  51.   WriteLn(Output);
  52.   WriteLn(Output,'Eingelesen wurde: ',IntegerValue:5)
  53. END.
  54.