Как управлять стрелочками при вводе числа Crt Pascal - Free Pascal
Формулировка задачи:
Как написать кнопочки, которыми нужно управлять с клавы ( как на скрине)? Подскажите, пожалуйста.
Решение задачи: «Как управлять стрелочками при вводе числа Crt Pascal»
textual
Листинг программы
program test; uses crt; const scKeyArrUp = $4800; scKeyArrLeft = $4B00; scKeyArrRight = $4D00; scKeyArrDown = $5000; scKeyEnter = $000D; scKeyEsc = $001B; type {тип для быстрого обращения к компонентам целого типа Word} TWordConvert = record case word of 0: (w: word); 1: (int: integer); 2: (Lo, Hi: byte); 3: (c0, c1: char); end; function ReadChar: word; var Res: word; begin Res := 0; TWordConvert(Res).c0 := ReadKey; if TWordConvert(Res).c0 = #0 then TWordConvert(Res).c1 := ReadKey; ReadChar := Res; end; procedure ClearKey; begin while KeyPressed do ReadKey; end; function GetWord(Message: string; var Num: word; Min, Max: word): boolean; var Scan: word; x0, y0: byte; OldNum: word; Res: boolean; begin {$I-} OldNum := Num; if (Num < Min) or (Num > Max) then Num := (Min + Max) shr 1; Write(Message); Write(' < '); x0 := WhereX; y0 := WhereY; ClearKey; Res := True; repeat TextAttr := TextAttr or Blink; Write(Num); TextAttr := TextAttr xor Blink; Write(' >'); ClrEoL; GotoXY(x0, y0); Scan := ReadChar; case Scan of scKeyArrUp, scKeyArrRight: if Num < Max then Inc(Num); scKeyArrDown, scKeyArrLeft: if Num > Min then Dec(Num); scKeyEsc: begin Num := OldNum; Res := False; Break; end; { scKeyEnter : Break;} else Continue; end; until Scan = scKeyEnter; Write(Num); GetWord := Res; {$I+} end; var X: word; begin X := 85; writeln; GetWord('Enter the X: ', X, 70, 200); writeln; writeln('x=', x); end.
Объяснение кода листинга программы
- Объявлены константы, представляющие клавиши стрелок и клавишу Enter.
- Объявлен тип TWordConvert для быстрого обращения к компонентам целого типа Word.
- Функция ReadChar считывает введенный символ и возвращает его в виде слова.
- Процедура ClearKey считывает все введенные символы до тех пор, пока не будет нажата клавиша Enter.
- Функция GetWord выводит сообщение, в которое нужно ввести число, и обрабатывает ввод числа с клавиатуры.
- Если число меньше минимального или больше максимального допустимого значения, то оно заменяется на среднее значение между минимальным и максимальным.
- Число выводится на экран, а затем считывается введенное значение.
- Если введена клавиша стрелки вверх или вправо, то число увеличивается на единицу.
- Если введена клавиша стрелки вниз или влево, то число уменьшается на единицу.
- Если введена клавиша Esc, то текущее значение числа устанавливается на значение по умолчанию, и функция возвращает False.
- Если введена клавиша Enter, то функция возвращает True.
- Значение числа выводится на экран.
- В основной программе объявлена переменная X со значением 85.
- Вызывается функция GetWord для ввода значения переменной X.
- Выводится значение переменной X.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д