![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Флогримм |
![]() ![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как узнать какой символ находиться на экране в позиции [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 - 26.11.2004 17:59 |
Флогримм |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, спасибо
ща попробую разобраться -------------------- Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
|
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Код Function GetChar(x, y: Integer): Char Var i: Integer; Begin i := Column*Pred(y) + x; GetChar := Buff[i].Ch; End; Это быстро, но можно еще сделать, используя прерывания.... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
![]()
Сообщение
#5
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
ага, это функция 08h прерывания 10h.
Код mov ah,08h операция возвращает в al символ, в ah атрибуты.mov bh,00 int 10h РАБОТАЕТ И В ТЕКСТОВЫХ И ГРАФ РЕЖИМАХ!!!! считывается сивол из положения курсора (перемещение крсора - int 10h (02h)) Если надо, могу написать процедуру... я вот подумал... это будет работать быстрее чем то что предложил volvo Аргументы:
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
ZeroLink |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Мужской Репутация: ![]() ![]() ![]() |
-------------------- Я могу изменить мир, но Бог не даёт исходник:(
|
APAL |
![]()
Сообщение
#7
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Код 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; -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:03 |