Устройство FreePascal CRT предотвращает перенаправление вывода
У меня возникла следующая проблема с модулем FreePascal CRT: после добавления модуля в проект (например, в простое консольное приложение, которое пишет "Hello World" с помощью WriteLn()), вывод программы отображается в CMD Windows, но не может быть перенаправлен.
Чтобы быть более подробным, следующий исходный код
program project1;
{$mode objfpc}{$H+}
uses
Classes;
begin
WriteLn('TestOutput');
end.
выводит "TestOutput" в командную строку Windows и bash работает в Windows. Команда
project1.exe > test.txt
создает файл test.txt
с содержанием TestOutput
,
После того, как блок CRT добавляется в проект (т.е. uses Classes, CRT;
), строка все еще печатается на консоли, но не может быть перенаправлена в файл или использована в контексте консоли (файл и переменная будут пустыми).
У кого-нибудь есть решение для такого поведения?
Может быть и хуже, но для удобства было бы здорово иметь варианты HighVideo()
и установка позиции курсора.
С наилучшими пожеланиями
Alex
1 ответ
Очевидное решение - не импортировать Crt, поскольку весь смысл Crt не является линейным текстовым выводом (позиционирование курсора).
Классически можно отключить ЭЛТ с помощью
assign(output,'');
rewrite(output);
Вы можете попытаться связать этот код с каким-либо параметром командной строки, чтобы сделать вывод пригодным для конвейера. Но чтобы это выглядело разумно, лучше также использовать другой (не цветной, не курсорный) выходной код.