IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Цвет экрана в текстовом режиме
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4

Репутация: -  0  +


Как сделать цвет экрана, ну например, белым в текстовом режиме?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


textbackground(15);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Не все так просто, а як же підключеня бібліотеки, і встановлення тексту чорним.

uses crt;
....

begin
...
textbackground(15);
textcolor(0);
...
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


1 - не думаю что он не догадается про uses crt;
2 - цвет шрифта может быть любым!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






TextAttr:=$10*BG+T;
Где BG - цвет фона, а Т - текста.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цвет фона задается в пределах 0..7
Хотя есть какой-то способ обойти это ограничение... (где-то выставляется флаг об использовании бита)

===============================
Procedure TextBackground(Color : Byte);
Замечания:
Color - целочисленное выражение в диапазоне 0 .. 7, соответствющее одной из первых восьми констант цвета в текстовом режиме. В модуле Crt существует
переменная типа байт - TextAttr, которая используется для хранения текущего
видеоатрибута. TextBackground устанавливает биты 4-6 переменной TextAttr в
Color.
=======================================
Procedure TextColor(Color : Byte);
Замечания:
Параметр Color - целочисленное выражение в диапазоне 0 .. 15,
соответствующий одной из констант цвета текстового режима, определенных в
модуле Crt.

В модуле Crt существует переменная типа байт - TextAttr, которая
используется для хранения текущего видеоатрибута. TextColor устанавливает
биты 0-3 переменной TextAttr в Color. Если Color больше 15, то бит 7 (бит,
определяюший мигание) тоже поднимается.

Сообщение отредактировано: APAL -


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 4

Репутация: -  0  +


Я так и думал, что последует ответ: TextBackground. Однако не всё так просто.
Я имел ввиду не цвет ФОНА текста, а цвет ЭКРАНА, на который выводится текст любого цвета. То есть к примеру также, как в графическом режиме процедура setbkcolor.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Если человек знает что такое uses crt то думаю он знает что такое и textbackground(15);

А цвет можно поменять просто заменив цвет каждого символа :-)
var
i : integer;
c : ^char;
begin
for i:=0 to 80*25-1 do
begin
c := ptr($B800,$0000+2*i+1);
c^ := chr(128);
end
end.


где 128 код цвета символа, в нем содержится информация про цвет фона и цвет символа. 128 - черный текст на белом фоне
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


И почему форум отступы хавает?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10





Группа: Пользователи
Сообщений: 4

Репутация: -  0  +


Молодец neex!. Именно это я и имел в виду. Однако у твоего способа есть один недостаток: он работает только в оконном режиме! В полном экране цвет по прежнему чёрный. Что посоветуешь?? ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Цитата(inet007 @ 3.03.04 6:43)
... один недостаток: он работает только в оконном режиме! В полном экране цвет по прежнему чёрный. Что посоветуешь?? ;)

Разве только в оконном?


ЗЫ: Я к видео-памяти обращался через mem[...]

Сообщение отредактировано: APAL -


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Цитата(inet007 @ 3.03.04 9:43)
Однако у твоего способа есть один недостаток: он работает только в оконном режиме!

Странный глюк, если оно и должно работать то в полноэкранном режиме.

У меня работает и в оконном и в неоконном.

Скорее всего у тебя винда или паскаль не такие как у меня.
Просто паскаль написан под МС ДОС, а винда запускает эмулятор ДОСа и в нем запускает Паскаль. И этот эмулятор может неправильно моделировать видеопамять, через которую и меняется цвет экрана. Можна покопатся в настройках эмулятора, но вряд ли это поможет. Также можна попробовать другой паскаль.

А также можно сменить ВИНДУ ;-)

В чистом досе все будет работать нормально.

У меня стоит Borland Pascal 7.0 и Windows XP Pro.

Сообщение отредактировано: neex -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Изменяй не память, а палитру:

Порт 3D8h - номер регистра, 3D9h - данные (в формате R-G-B). Затем номер автоматом увеличивается. Не канает через порты - меняй через ф-ии BIOS, по-моему int 10,10..

Сообщение отредактировано: GLuk -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


Чтобы залить весь экран цветом, после TextBackground мдет ClrScr... или я не в ту степь иду?


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Цитата
Скорее всего у тебя винда или паскаль не такие как у меня.


Действительно, например при WindowsNT нет никакой гарантии, что DOSявые приложения и, в частности, BP7 не будут глючить. Кстати, там и могут возниать проблемы с отображением в полноэкранном режиме. Virtual Pascal вроде не глючит.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 21:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name