Написал процедуру которая должна: Выдавать координаты мыши Выдавать, сколько кнопок у мыши? Выдавать какая кнопка нажата? Процедура
| Код | unit Mouse; interface var MousePresent:Boolean; function MouseInit(var nb:word):Boolean; {nb-количество клавиш мыши, True-успешно} procedure MouseShow; Procedure MouseRead(var X,Y,bMask:Word); {bMask - маска клавиш: 0-й байт - левая клавиша нажата (равно 1) 1 - правая 2 - центральная (если есть)} implementation uses Dos; var R:Registers; Mi:Pointer; function MouseInit(var nb:Word):Boolean; begin if MousePresent then begin {мышь присутствует} R.AX:=0; Intr($33,R); if R.AX=0 then begin nb:=0; {инициализация не удалась} MouseInit:=false; end else begin x nb:=R.BX; {число клавиш} MouseInit:=True; end end else begin nb:=0; {мышь отсутствует} MouseInit:=false; end end; procedure MouseShow; begin R.AX:=1; Intr($33,R); end; procedure MouseRead(var X,Y,bMask:word); begin R.AX:=3; Intr($33,R); X:=R.CX; Y:=R.DX; bMask:=R.BX; end; {Инициализация} begin GetIntVec($33,Mi); if Mi=nil then MousePresent:=False; {нет адреса программы обраб прерываний} if Byte(Mi^)=$CE then {фиктивный адрес прогр обраб прер} MousePresent:=False else MousePresent:=True end.
|
При подключении етой процедуры в программу которая описана ниже
| Код | program osl8; uses Crt,Mouse; var X,Y,BN,Kol:Word; begin TextBackGround(Blue); ClrScr; TextColor(Red); if MouseInit(Kol) then begin MouseShow; repeat MouseRead(X,Y,BN); if BN and 1 <>0 then begin {нажата левая кнопка} X:=X div 10+1; Y:=Y div 10 +1; GoToXY(X,Y); Write('*'); end; until BN and2<>0 {выход при нажатой правой клавиши} end; end.
|
Должно собственно и выводится то что описано выше.......но в самой программе мне выдает ошибку в строке где подключается процедура....помогите......в чем может быть проблема??? |