Хаюшки! Я узнал, что в паскалевские программы можно включать файлы .OBJ, но сколько ни пытался, у меня ниего не получается. Можете ли вы обьяснить мне как это делается. И ещё один вопрос: при работе с функцией 000Ch, в паскале, я вызываю пользовательскую процедуру как обработчик. Условие вызова процедуры-перемещение мыши. В описании функции сказано, что она на входе в обработчик передаёт в регистре топор (AX), условие вызова, но при входе в процедуру у меня при любом выполнившемся условии в регистре AX лежит значение 12, тоесть ax=000ch :-( Посмотрите текст и подскажите, что у меня не правильно и почему в данном случае значения регистров не изменяются при входе в обработчик? Заранее спасибо.
Здравствуй, zaknafeyn! 1)Смотри файлы BGILINK.pas и BGIFONT.pas из дестрибутива борланд паскаля. Или сокращенный фариант этих файлов в приложении. 2)Procedure a(ax:word);interrupt; ты объявляешь переменную AX. В нее кладется условие вызова. А считываешь ты из другой переменной: R.AX в которую ты поместил значение 12. Объявление процедуры должно выглядеть так: Procedure a(Flags,CX,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:word);interrupt; Все это твои переменные. Можешь делать с ними что хочешь. На реальные значения флагов и регистров это не повлияет.
Приложение: Ответ отправлен: 30.11.2003, 22:30 Отправитель: Vitally Отвечает sir henry
Приветствую Вас, zaknafeyn! 1. Нужно указать, какой файл Вы собираетесь включать в свою программу: {$I myfile.obj} Далее, при объявлении процедуры или функции, необходимо дополнительно указать слово external. Ответ отправлен: 01.12.2003, 15:19 Отправитель: sir henry Отвечает Boriss
Здравствуйте, zaknafeyn! 0) OBJ - есть во многих примерах по встроенному ассемблеру. И можно для процедур в этих OBJ, можно для шрифтов, ... - Что нужно то? Для подпрограмм: а) объявляете ее, добавляете после точки с запятой EXTERNAL; б) {$L <имя файла объектного>} в) вызываете Для шрифтов и подобных сначала регистрируете, общее название процедур RegisterXXXXX О мыши: 1) НЕПРАВИЛЬНО в принципе. Обработчик любого прерывания должен работать максимально быстро: что-то куда-то записать, произвести минимальные вычисления,... НО НО В КОЕМ СЛУЧАЕ не вызывать другие прерывания (PutPixel - вызывает) 2) Это вы на TMT? С ним не работал, поэтому, что делается при вызове MouseOn - не знаю 3) Проверить работоспособность Вашей программы абсолютно невозможно - ЧТО ТАКОЕ fl, например? 4) Читайте описания:
Приложение: Ответ отправлен: 01.12.2003, 12:53 Отправитель: Boriss
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.