пардон конечено, но я опять с тупыми вопросами -_- сел тут решил накидать основу по примеру, ничерта не получаецца(
Код
program Consolepr; {$APPTYPE CONSOLE} {$R *.res} uses Windows, SysUtils;
Type PBuffer= ^TBuffer; TBUffer= packed array [0..16384] of TCharInfo;
var Buffer: PBuffer; InpHnd: Cardinal; {----------PROCEDUREs----------} procedure Input; var a: Char; IR: INPUT_RECORD; C: _Coord; InpHnd, OutHnd, Wr: Cardinal; begin repeat WaitForSingleObjectEx(InpHnd,INFINITE,false); // ждем события ReadConsoleInput(InpHnd,IR,1,Wr); // берем запись в переменную IR case IR.EventType of // анализируем тип события KEY_EVENT: // от клавиатуры: begin if IR.Event.KeyEvent.bKeyDown then // если клавиша нажата begin a:=IR.Event.KeyEvent.AsciiChar; // взять символ в переменную "а" if a>#0 then // если буквенная клавиша: begin WriteConsoleOutputCharacter(OutHnd,@a,1,C,Wr); // вывести букву на экран Inc(C.X); // сместиться вправо end else // если служебная: case IR.Event.KeyEvent.wVirtualKeyCode of // проверяем код виртуальной клавиши VK_UP: if (IR.Event.KeyEvent.dwControlKeyState and SHIFT_PRESSED <> 0) then {!!!} // если Shift+Вверх, то делаем что-то end; end; end; end; until IR.Event.KeyEvent.wVirtualKeyCode = VK_F10; // выход по нажатию F10 end;
procedure Output; var co: _COORD; Hnd, Wr: Cardinal; begin Hnd:=GetStdHandle(STD_INPUT_HANDLE); co.X:=0; co.Y:=0; SetConsoleCursorPosition(Hnd,co); WriteConsoleOutputAttribute(Hnd,Buffer,10,co,Wr); end;