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

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

Форум «Всё о Паскале» _ Задачи _ мышь ассамблер и конечно PASCAL

Автор: Glykaman 14.09.2007 2:42

прошу прощения что немного не в тему(наверное) я с асамблером сюда оброщаюсьно тем не менее нужна помошь.Сразу к делу:
Прикрепленный файл  MOUSE.PAS ( 1.03 килобайт ) Кол-во скачиваний: 470

это модуль который я никак не могу заставить работать с следующей программой:


PROGRAM CHECK;
USES
CRT,GRAPH,DOPFORGR,MOUSE;
VAR
X,Y:INTEGER;
PRINTTEXT:STRING;
BUTTON:TBS;
BEGIN
SHOWMOUSE;
{ALLREGION;}
REPEAT
GETMOUSE(X,Y,BUTTON);
GOTOXY(10,10);
WRITE('X = ',X,'Y = ',Y,' ');
GOTOXY(10,11);
IF LEFT IN BUTTON
THEN WRITE('LEFT KEY')
ELSE WRITE('NO LEFT KEY');
GOTOXY(10,12);
IF RIGHT IN BUTTON
THEN WRITE('RIGHT KEY')
ELSE WRITE('NO RIGHT KEY');
UNTIL KEYPRESSED;

HIDEMOUSE;
READLN;
END.


по задумке прога должна показывать координаты мыши и нажата ли какая либо клавиша на ней,но ни то ни другое не пашет хотя в самоучителе написано всё так же за исключением имён переменных. Я первый раз вожусь с асамблером мож команды какие не те(в смысле зависимые от конкретной конфигурации компа)?

Автор: volvo 14.09.2007 2:57

Во-первых, мыщь не инициализирована, надо в самом начале вызывать функцию InitMouse вот отсюда:
http://forum.pascal.net.ru/index.php?showtopic=2383

Ну, а во-вторых, здесь должны быть Var-параметры, ты же хочешь получить результат через них:

 PROCEDURE GETMOUSE(Var X,Y:INTEGER;Var BUTTON:TBS); { <--- }

Автор: Glykaman 14.09.2007 3:13

за PROCEDURE GETMOUSE(Var X,Y:INTEGER;Var BUTTON:TBS); { <--- } спасибо только у меня без InitMouse пошло а зачем он нужен(если в кратце)?

добавил через 5 минут:
сорри всё ясно

Автор: Glykaman 17.09.2007 3:35

У меня появилась ещё одна проблема куда менее предвиденная:
Вот архив с программой: Прикрепленный файл  Архив_WinRAR.rar ( 7.51 килобайт ) Кол-во скачиваний: 368
(Neonmoon.pas исполняемый код программы)
которую я разрабатываю вот уже пол месяца.
недавно начал подсоединять мышь вот по этой инструкции: http://forum.pascal.net.ru/index.php?showtopic=2383
со стандартным видео драйвером всё впорядке - работает правда с 16 цветами,кактолько я подключаю BGI256.BGI меня выкидывает в XP с сообщением "Процессор NTVDM обнаружил недопустимую инструкцию"
и выполнение задачи прекращается. Я пробовал подключать другие драйвера(VESA256,SVGA,...) всё равно ничего не выходит. но когда я закоментирую процедуру SHOWMOUSE в исполняемом коде,(мышь не показывается) зато все остальные процедуры работы с мышью работают без ошибок.скажите что я сделал неправильно?

Автор: volvo 17.09.2007 4:59

Цитата
кактолько я подключаю BGI256.BGI меня выкидывает в XP
Об этом, кстати, по приведенной тобой ссылке сказано...

Этот вопрос часто возникает, поэтому вот ссылка на модуль, который корректно работает с мышью во всех поддерживаемых режимах:
http://pascal.sources.ru/graph/vesa2.htm

Автор: Glykaman 26.09.2007 0:18

Цитата(volvo @ 17.09.2007 1:59) *

Об этом, кстати, по приведенной тобой ссылке сказано...

Этот вопрос часто возникает, поэтому вот ссылка на модуль, который корректно работает с мышью во всех поддерживаемых режимах:
http://pascal.sources.ru/graph/vesa2.htm

В очередной раз спасибо volvo! Всё отлично работает.