Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Программа для работы с мышкой!

Автор: metamfetamin 8.12.2007 21:18

Написал процедуру которая должна:
Выдавать координаты мыши
Выдавать, сколько кнопок у мыши?
Выдавать какая кнопка нажата?
Процедура

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.
Должно собственно и выводится то что описано выше.......но в самой программе мне выдает ошибку в строке где подключается процедура....помогите......в чем может быть проблема???

Автор: volvo 8.12.2007 21:23

Цитата
мне выдает ошибку в строке где подключается процедура
Поточнее можно? В какой строке? Какую ошибку? Какая ПРОЦЕДУРА подключается (обычно подключается модуль)?

Автор: metamfetamin 8.12.2007 21:28

Цитата(volvo @ 8.12.2007 17:23) *

Поточнее можно? В какой строке? Какую ошибку? Какая ПРОЦЕДУРА подключается (обычно подключается модуль)?


Ошибка file not found (mouse.tpu)

Может я как то не правильно сохранил или не туда поместил сам юнит?????

Автор: volvo 8.12.2007 21:52

Может, надо нажимать F9, а не Alt+F9? smile.gif

Автор: metamfetamin 9.12.2007 15:39

Вроде пошло дальше, дошло до
...
if MouseInit(kol) then
...
Как я понимаю надо описать выше написаное в var ???? А как именно???

Автор: volvo 9.12.2007 15:52

blink.gif
Не понял... Что там компилятору-то твоему не нравится? Ошибку-то приводи саму... У меня в этой строке все нормально проходит...

Автор: metamfetamin 9.12.2007 15:56

Цитата(volvo @ 9.12.2007 11:52) *

blink.gif
Не понял... Что там компилятору-то твоему не нравится? Ошибку-то приводи саму... У меня в этой строке все нормально проходит...



Добавлено через 3 мин.
Скачал Паскаль другой вродь пошло!!!! Благодарю за беспокойство!!!


Эскизы прикрепленных изображений
Прикрепленное изображение