Другие языки программирования и технологии
КТО знает подскажите как прогу в паскале написать с применением аски кодов
короч нада что б прога распознавала какие стрелки нажали а по Эск выходила
Доброго времени суток.
Сначала объявляете константы
const
Null = #0; Esc = #27; Enter = #13;
HomeKey = #71; EndKey = #79; CtrlPgUpKey = #132;
LeftKey = #75; RightKey = #77; CtrlPgDnKey = #118;
DownKey = #80; UpKey = #72; CtrlHomeKey = #119;
PgUpKey = #73; PgDnKey = #81; CtrlEndKey = #117;
F1Key = #59;
mcExit = 0; mcSelect = 1; mcLeft = 2; mcRight = 3;
mcHome = 4; mcEnd = 5; mcUp = 6; mcDown = 7;
mcPgUp = 8; mcPgDn = 9; mcCtrlPgUp = 10; mcCtrlPgDn = 11;
mcHelp =12; mcCtrlEnd = 13; mcCtrlHome = 14;
mcNoCommand = 255;
Потом функцию
function GetKey: byte;
var
Ret : byte;
ch : char;
begin
Ret := mcNoCommand;
repeat
ch := ReadKey;
ch := UpCase(ch);
if (ch = null) and KeyPressed then begin
ch := ReadKey; Ret := ord(ch); {если нажата функциолнальная клавиша, то ReadKey возвращает 2 байта (первый 0), поэтому читаем еще раз}
case ch of
DownKey : Ret := mcDown;
UpKey : Ret := mcUp;
RightKey : Ret := mcRight;
LeftKey : Ret := mcLeft;
HomeKey : Ret := mcHome;
EndKey : Ret := mcEnd;
PgUpKey : Ret := mcPgUp;
PgDnKey : Ret := mcPgDn;
CtrlPgUpKey : Ret := mcCtrlPgUp;
CtrlPgDnKey : Ret := mcCtrlPgDn;
CtrlHomeKey : Ret := mcCtrlHome;
CtrlEndKey : Ret := mcCtrlEnd;
F1Key : Ret := mcHelp;
end;
end
else
case ch of
Enter : Ret := mcSelect;
Esc : Ret := mcExit;
'0'..'9',
'A'..'F' : Ret := ord(ch);
end;
until (Ret < mcNoCommand);
GetKey := Ret;
end;
А потом в цикле обращаетесь к ней и в зависимости от возвращаемого значения предпринимаете те или иные действия.
repeat
cm := GetKey;
case cm of
mcExit : CurInd := 1;
else begin
TurnItem(CurInd, false);
case cm of
mcLeft : if CurInd <> 1 then Dec(CurInd)
else CurInd := h;
mcRight : if CurInd <> h then Inc(CurInd)
else CurInd := 1;
mcEnd : CurInd := h;
mcHome : CurInd := 1;
end;
TurnItem(CurInd,true);
end;
end;
until (cm <= mcSelect);
Полагаю, вы понимете, что это только пример и функция GetKey может иметь тип Char и возмвращать символ. Тогда в программе нужно будет сравнивать значение этой функции с соответствующими константами.
Удачи!
Сначала объявляете константы
const
Null = #0; Esc = #27; Enter = #13;
HomeKey = #71; EndKey = #79; CtrlPgUpKey = #132;
LeftKey = #75; RightKey = #77; CtrlPgDnKey = #118;
DownKey = #80; UpKey = #72; CtrlHomeKey = #119;
PgUpKey = #73; PgDnKey = #81; CtrlEndKey = #117;
F1Key = #59;
mcExit = 0; mcSelect = 1; mcLeft = 2; mcRight = 3;
mcHome = 4; mcEnd = 5; mcUp = 6; mcDown = 7;
mcPgUp = 8; mcPgDn = 9; mcCtrlPgUp = 10; mcCtrlPgDn = 11;
mcHelp =12; mcCtrlEnd = 13; mcCtrlHome = 14;
mcNoCommand = 255;
Потом функцию
function GetKey: byte;
var
Ret : byte;
ch : char;
begin
Ret := mcNoCommand;
repeat
ch := ReadKey;
ch := UpCase(ch);
if (ch = null) and KeyPressed then begin
ch := ReadKey; Ret := ord(ch); {если нажата функциолнальная клавиша, то ReadKey возвращает 2 байта (первый 0), поэтому читаем еще раз}
case ch of
DownKey : Ret := mcDown;
UpKey : Ret := mcUp;
RightKey : Ret := mcRight;
LeftKey : Ret := mcLeft;
HomeKey : Ret := mcHome;
EndKey : Ret := mcEnd;
PgUpKey : Ret := mcPgUp;
PgDnKey : Ret := mcPgDn;
CtrlPgUpKey : Ret := mcCtrlPgUp;
CtrlPgDnKey : Ret := mcCtrlPgDn;
CtrlHomeKey : Ret := mcCtrlHome;
CtrlEndKey : Ret := mcCtrlEnd;
F1Key : Ret := mcHelp;
end;
end
else
case ch of
Enter : Ret := mcSelect;
Esc : Ret := mcExit;
'0'..'9',
'A'..'F' : Ret := ord(ch);
end;
until (Ret < mcNoCommand);
GetKey := Ret;
end;
А потом в цикле обращаетесь к ней и в зависимости от возвращаемого значения предпринимаете те или иные действия.
repeat
cm := GetKey;
case cm of
mcExit : CurInd := 1;
else begin
TurnItem(CurInd, false);
case cm of
mcLeft : if CurInd <> 1 then Dec(CurInd)
else CurInd := h;
mcRight : if CurInd <> h then Inc(CurInd)
else CurInd := 1;
mcEnd : CurInd := h;
mcHome : CurInd := 1;
end;
TurnItem(CurInd,true);
end;
end;
until (cm <= mcSelect);
Полагаю, вы понимете, что это только пример и функция GetKey может иметь тип Char и возмвращать символ. Тогда в программе нужно будет сравнивать значение этой функции с соответствующими константами.
Удачи!
Юзай readkey и тому подобное. Для стрелок изучи что такое скан-коды.
Похожие вопросы
- СРОЧНО ! Напишите прогу на Паскале
- напишите проги в ПАСКАЛЕ плиз!!!очень надо.
- Помогите написать прогу на паскале
- Как в Паскале написать прогу для перевода чисел из двоичной в шестьнадцатиричную.Длина кода 64 бит.(64 цифры в вводимом
- СРОЧНО ПОМОГИТЕ!!! Напишите прогу на паскале
- Как написать прогу на паскале или С, чтобы при запуске этой проги она удаляла файл, например С://123.txt
- Помогите написать прогу на Паскале, экзамен горит, очень нужно..
- Помогите написать прогу на паскале!
- Здравствуйте напишите простую прогу на паскале пожалуйста. задание внутри
- приветик!напишите плиз проги...в паскале.