Символ на экране..., какой?? |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Символ на экране..., какой?? |
Флогримм |
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: 4 |
Как узнать какой символ находиться на экране в позиции [x,y] (в текстовом режиме)??
-------------------- Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
|
volvo |
Сообщение
#2
|
Гость |
Код type TVideoWord = Record Ch: Char; Attrib: Byte; End; TVideoBuffer = Array[1 .. 50*80] Of TVideoWord; Var Buff: TVideoBuffer Absolute $B800:$0000; { цветной режим. Для Mono $B000:$0000 } Column: Byte Absolute $0000:$044A; Function GetChar(x, y: Integer): Char Var i: Integer; Begin i := Column*Pred(y) + x; GetChar := Buff[i].Ch; End; Begin WriteLn( GetChar(10, 10) ); End. Сообщение отредактировано: volvo - |
Флогримм |
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: 4 |
volvo, спасибо
ща попробую разобраться -------------------- Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
|
Altair |
Сообщение
#4
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Код Function GetChar(x, y: Integer): Char Var i: Integer; Begin i := Column*Pred(y) + x; GetChar := Buff[i].Ch; End; Это быстро, но можно еще сделать, используя прерывания.... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
Сообщение
#5
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
ага, это функция 08h прерывания 10h.
Код mov ah,08h операция возвращает в al символ, в ah атрибуты.mov bh,00 int 10h РАБОТАЕТ И В ТЕКСТОВЫХ И ГРАФ РЕЖИМАХ!!!! считывается сивол из положения курсора (перемещение крсора - int 10h (02h)) Если надо, могу написать процедуру... я вот подумал... это будет работать быстрее чем то что предложил volvo Аргументы:
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
ZeroLink |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 41 Пол: Мужской Репутация: 0 |
-------------------- Я могу изменить мир, но Бог не даёт исходник:(
|
APAL |
Сообщение
#7
|
Смотрю... Группа: Пользователи Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: 6 |
Код Type Ekr = array[1..4000] of Byte; Var Ma : Ekr absolute $B800:$0000; Function GetChar(x,y : Byte) : Byte; Begin GetChar:=Ma[160*(y-1)+x*2-1]; End; Function GetAttr(x,y : Byte) : Byte; Begin GetAttr:=Ma[160*(y-1)+x*2]; End; Procedure SetChar(x,y,c : Byte); Begin Ma[160*(y-1)+x*2-1]:=c; End; Procedure SetAttr(x,y,a : Byte); Begin Ma[160*(y-1)+x*2]:=a; End; -------------------- |
Текстовая версия | 3.05.2024 8:31 |