![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Ситуация в том что программа не реагирует на нажатие клавиш, за исключением определенных случаев.
1) если не вызывать ф-цию stPop (либо дважды вызывать перед ней stPush) 2) если превратить ф-ции stPop и stPush в процедуры (вырезав только result:=) 3) если подключить модуль crt, и использовать родной readkey из стандартной библиотеки crt Код:
{$MODE OBJFPC} program main; //uses crt; uses keyboard; type PList = ^TList; TList = record Data: byte; prev: PList; Next: PList; end; var c:char; dat:byte; st:Plist; function readkey(iswait: boolean = False): char; var key: tkeyevent; begin if iswait = True then Key := PollKeyEvent; if key <> 0 then begin Key := GetKeyEvent; Key := TranslateKeyEvent(Key); end; Result := GetKeyEventChar(Key); end; function stEmpty(aList: Plist): boolean; begin Result := (aList = nil); end; function stPush(var aList: PList; aData: byte): PList; var p: PList; begin new(p); p^.Data := aData; p^.prev := aList; alist := p; Result := p; end; function stPop(var aList: PList; var aData: byte): PList; var p: PList; begin Result := nil; if stEmpty(aList) then exit; p := alist; alist := alist^.prev; Result := p^.prev; dispose(p); end; begin initkeyboard; stPop(st,dat); repeat c:=readkey; //------ until c=#27; end. Компилятор fpc 2.6.4 |