как восстановить дефолтные характеристики терминала
				
Добавлено: 
08.09.2019 12:48:50 anchar
				имеем: дефолтные характеристики терминала (Linux Mint): черный фон и серый шрифт. После запуска программы под fpc (+ модуль crt) с использованием TextColor(Red) и TextBackground (White) и выхода из программы, терминал имеет красный шрифт и белый фон. Что сделать, чтобы восстановить характеристики терминала (черный фон и серый шрифт) перед выходом из программы? Спасибо.
			 
			
				Re: как восстановить дефолтные характеристики терминала
				
Добавлено: 
08.09.2019 19:26:50 anchar
				Вы хотели сказать TextColor(Grey)? Дело в том, что такое решение мне не нравится, т.к. не учитывает характеристики терминала пользователя (ведь это может быть любой другой цвет фона и текста).
			 
			
				Re: как восстановить дефолтные характеристики терминала
				
Добавлено: 
09.09.2019 03:53:00 Vadim
				ancharВ таком случае Вы можете запомнить в какой-нибудь переменной предыдущую расцветку терминала:
- Код: Выделить всё
- Var
 OldStyle: Byte;
 Begin
 OldStyle:=TextAttr;
 // Полёт программистской мысли
 ...
 // Закончили работу
 TextAttr:=OldStyle;
 End;
Добавлено спустя 14 минут 28 секунд:Хотя нет, эта переменная при инициализации не считывает настройки цвета терминала. Видимо придётся подключать ncurses и через него считывать настройки терминала.
Добавлено спустя 21 минуту 10 секунд:ancharИли, если пользоваться внешними средствами, можно так:
- Код: Выделить всё
- FpExecL('tput', ['reset']);
 FpExecL('tput', ['clear']);

 
			 
			
				Re: как восстановить дефолтные характеристики терминала
				
Добавлено: 
09.09.2019 09:56:50 Vadim
				iskander
TextAttr работает только внутри собственной программы, цвета терминала, которые были до её запуска, она не берёт.
Вот, к примеру, у меня ностальгический зелёный цвет текста на чёрном фоне, однако TextAttr показывает то, что внутри программы, а не то, что было до него:
			 
			
				Re: как восстановить дефолтные характеристики терминала
				
Добавлено: 
18.09.2019 16:17:36 anchar
				решение не очень красивое, но рабочее. найдено здесь:
https://wiki.freepascal.org/Executing_External_Programs#TProcessв соответствующие места программы следует вставить:
- Код: Выделить всё
- uses
 process;
 var
 reset_process: TProcess;
 begin
 reset_process := TProcess.Create(nil);
 reset_process.Executable := 'reset';
 reset_process.Options := reset_process.Options + [poWaitOnExit];
 reset_process.Execute;
 reset_process.Free
 end.