1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
1

После перенаправления потока вывода не настраивается фон и цвет текста

28.06.2014, 18:52. Показов 1057. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
   assign(output,'MITINGI.TXT'); rewrite(output);
   for i := 1 to n do
      spisok[i]^.Vyvod;
   close(output);
   assign(output,'con'); rewrite(output);
   textbackground(black);
   textcolor(lightgray);
   writeln('Tablitsa mitingov byla uspeshno zapisana v fail MITINGI.TXT!');
   readkey;
После выполнения данного фрагмента ранее установленный цвет фона и текста сбрасывается, и меняется на тот, что у моей консоли настроен. Повторной настройкой после возвращения output-а на консоль проблема не решается (см. приложения). Что делать?
Миниатюры
После перенаправления потока вывода не настраивается фон и цвет текста   После перенаправления потока вывода не настраивается фон и цвет текста   После перенаправления потока вывода не настраивается фон и цвет текста  

1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2014, 18:52
Ответы с готовыми решениями:

Элемент для вывода текста чтобы можно было менять цвет текста
Подскажите пожалуйста, существует ли какой-то элемент для вывода текста чтобы можно было менять...

Как задать цвет и фон текста с++?
Доброго времени суток =) Вот отрывок кода из моей программки которая в консоле выводит тект...

Почему приостановка потока совершается ДО вывода текста метки?
Почему приостановка потока совершается ДО вывода текста метки? if (Info.MoveUseArg == 7) // юс...

Отмена перенаправления вывода
exec >> log 2>&1 echo "вывод в log" echo "вывод в терминал" >&1 Как заставить второй echo...

6
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
28.06.2014, 19:02 2
Pascal
1
2
3
textbackground(black);
textcolor(lightgray);
clrscr;
0
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
28.06.2014, 19:09  [ТС] 3
Puporev, не помогло
Миниатюры
После перенаправления потока вывода не настраивается фон и цвет текста  
0
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
29.06.2014, 00:06  [ТС] 4
Решила не выпендриваться, и работать через обычный файл)) Хотя интересно узнать почему такое творится
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7648 / 4488 / 2809
Регистрация: 22.11.2013
Сообщений: 12,827
Записей в блоге: 1
09.03.2015, 21:55 5
AssignCrt(output) свяжет с потоком вывода функции вывода модуля Crt вместо файлового ввода/вывода. А они умеют выводить напрямую в видеопамять при DirectVideo=True или через INT 10h. В исходниках модуля Crt такое связывание делается в секции инициализации модуля, выполняемой до того, как получит управление основная программа:
Pascal
1
2
3
4
5
unit crt;
...
initialization
AssignCrt(output);
end.
0
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
10.03.2015, 20:14  [ТС] 6
Ааааааааа не очень поняла, ну ладно))
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7648 / 4488 / 2809
Регистрация: 22.11.2013
Сообщений: 12,827
Записей в блоге: 1
11.03.2015, 00:05 7
Керра,
что тут понимать-то?

Изначально процедуры вывода для output назначены вызовом AssignCrt(output), который включен в раздел инициализации модуля Crt и выполняется до передачи управления телу программы от её "begin". Эти процедуры учитывают значения WindMin, WindMax (задаются вызовом Window), DirectVideo и TextAttr из модуля Crt.

Позже вы сделали Assign(output,'con'); Rewrite(output), для вывода были назначены файловые процедуры, которые все это хозяйство не учитывают. Если нужно было восстановить прежнее поведение, нужно было вместо того позвать AssignCrt(output); Rewrite(output).
Pascal
5
  assigncrt(output); rewrite(output);
Реализована эта кухня благодаря тому, что вызовы Reset, Rewrite, Append зовут функцию открытия, адрес которой уже записан в текстовой файловой переменной (вызовом Assign или аналогичным), а функция открытия прописывает внутри текстовой файловой переменной адреса функций ввода/вывода, которые затем будут вызываться для реального выполнения чтения/записи при вызовах Read[Ln]/Write[Ln].

Надеюсь, так несколько понятнее...

Добавлено через 5 минут
PS. "Внутреннее устройство" переменной типа Text см. http://www.freepascal.org/docs... xtrec.html
InOutFunc -- адрес функции, осуществляющей вывод данных буфера на устройство.
Про AssignCrt см. http://www.freepascal.org/docs... gncrt.html

Добавлено через 2 минуты
PPS. Если модуль Crt не используется, то output связан с stdout и вывод осуществляется обычными файловыми функциями.
1
11.03.2015, 00:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2015, 00:05
Помогаю со студенческими работами здесь

Разобрать код перенаправления ввода вывода
Не могу разобраться с принципом ввода вывода, в общем дело состоит так: есть не большая программа...

Флаг failbit для перенаправления строкового потока; почему он всегда у меня поднят?
#include <windows.h> #include <stdio.h> #include <sstream> using namespace std; int main()...

Изменение стиля текста в document.write через 10 секунд после загрузки сайта и изменяет цвет текста каждые 10 секунд
<style type="text/css"> .st1 { color: green; * * font: 20pt Arial; * * text-align: center; }...

Убрать зелёный фон у текста, оставшийся после копирования из WEB-странички
Как убрать фон у текста, скопированного и web-странички? В остальном, формат текста меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru