как перенаправить вывод моей консольной программы в ф
Модератор: Модераторы
как перенаправить вывод моей консольной программы в ф
Программа пользуется обычным writeln'ом. Не получается перенаправить вывод в файл - при запуске типа prg.exe > file.ext создается пустой файл (на экран в это время тоже ничего не выводится). Само собой, она все же что-то выводит, если ее просто запустить.
А причём здесь FreePascal
$ echo "program calc; begin writeln('Message: ',sin(PI/2)) end." > calc.pas && fpc calc.pas 1>/dev/null && ./calc > result.txt && cat result.txt && rm calc* && rm result.txt
Message: 1.0000000000000000E+0000
У меня переправляет.
Message: 1.0000000000000000E+0000
У меня переправляет.
Aisa
Текст программы - в студию!
Текст программы - в студию!
Mr.Smart писал(а):А причём здесь FreePascal
Притом, что я на нем пишу. Это вопрос не по паскалю, как языку, а по компилятору freepascal.
Vadim писал(а):Aisa
Текст программы - в студию!
вот сэмпл (во всем виноват crt, как я понял, но мне он нужен)
Код: Выделить всё
uses crt;
begin
writeln('test');
end.add:
Из crt я использую gotoxy, wherey, clreol и readkey. Если эту функциональность можно получить другим образом - тоже вариант. Сейчас я уже не нуждаюсь в перенаправлении - обошелся, но пришлось именно обходиться. Хотелось бы иметь простое решение в следующий раз.
Aisa
Действительно, есть такая фишка. Виновато тут не совсем Crt.
Дело в том, что в WinAPI есть две группы функций по работе с консолью:
1. Примитивная, которая только выводит на консоль что-нибудь и считывает оттуда данные. Write\Read\Ln, если не подключать Crt, базируется на этих примитивных функциях.
2. Продвинутая, более изощрённая, но работает она уже не с консолью непосредственно, а с буфером консоли или, другими словами, с некоей виртуальной консолью. Естественно Crt основано на этой самой второй группе функций, по другому просто не получится.
Действительно, есть такая фишка. Виновато тут не совсем Crt.
Дело в том, что в WinAPI есть две группы функций по работе с консолью:
1. Примитивная, которая только выводит на консоль что-нибудь и считывает оттуда данные. Write\Read\Ln, если не подключать Crt, базируется на этих примитивных функциях.
2. Продвинутая, более изощрённая, но работает она уже не с консолью непосредственно, а с буфером консоли или, другими словами, с некоей виртуальной консолью. Естественно Crt основано на этой самой второй группе функций, по другому просто не получится.
