Для начала нужно вызвать процедуру GotoXY(x,y: byte) из модуля CRT. Эта процедура перемещает курсор в указанную строку (x) и указанный столбец (у) .
Нумерация начинается с левого верхнего угла монитора: самая верхняя строка, самый левый символ имеют координаты (1,1), второй символ первой строки - (1, 2). Т. е. ось Ox направлена из левого верхнего угла монитора параллельно земле в правый верхний угол, а ось Oy направлена от левого верхнего угла в левый нижний.
Вопрос со считыванием символа решить средствами Паскаля не удастся т. к. в Паскале нет функций возвращающих символ, находящийся в положении курсора. Для этого придется воспользоваться ассемблером:
Для этой цели в ассемблере есть 8-я функция 10h прерывания, которая возвращает символ и его атрибуты, находящийся в положении курсора в регистр ЦП AX.
Сам код функции примерно такой:
Function GetChar(x,y:byte):char; { функция возвращающих символ, находящийся в положении курсора }
Var Reg : Registers; { Эта переменная дает доступ к регистрам ЦП }
Begin
GoToXY(x,y); { процедура, переводящая курсор в положение x,y на экране }
With Reg do
Begin
AH:=8; { Номер функции }
BH:=0; { Номер страницы }
{ именно в эту страницу видеопамяти паскаль записывает все данные процедурами Write/WriteLn }
End;
Intr($10,Reg); { вызываем 10h прерывание ЦП }
{ после этого символ хранится в AL, а его атрибуты в AH }
GetChar:=chr(reg.AL); { присваиваем выходное значение функции }
{ т. е. получаем символ с экрана }
{ если вам понадобится узнать атрибуты символа, тогда вместо GetChar:=chr(reg.AL);
напишите GetChar:=reg.AH; и поменяйте выходной тип функции на byte как показана ниже:
Function GetCharAtrib(x,y:byte):byte;
}
end;
PS: ещё как вариант - попробовать работать с видеопамятью. .
Другие языки программирования и технологии
Pascal. Модуль CRT. Как считать символ с экрана, зная его координаты?
readchar какой-нибудь. Хелп - по кнопке F1 в IDE языка
Правильнее будет не считывать символ с экрана, а перед выводом его на экран сохранить в переменной.
Похожие вопросы
- Модули CRT и System.Windows.Forms в pascal не работают вместе, как решить?
- turbo pascal 7.0 Определить принадлежность к области точек с заданными координатами!!!
- модуль CRT паскаль 3
- Матлаб guide, не считает символ деление
- Pascal. Даны координаты начала и конца отрезка. Определить координаты всех точек этого отрезка.
- Помогите с Pascal ABC. Можно ли соединить модуль Graph и обычную программу ?
- как уалить рекламный модуль? когда на любой сайт захожу в углу экрана появляется рекламный модуль его убрать можно тольк
- добрый день подскажите пожалуйста программисты есть отличия между turbo и object Pascal я знаю что object pascal
- Вопрос тем, кто знает Pascal! Как сделать так, чтобы результат программы, который выводится на экран,
- Объясните, пожалуйста, как написать программу в Pascal'e, которая определяет, находится ли координата в ромбе или нет.