как перенаправить вывод моей консольной программы в ф

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
Aisa
незнакомец
Сообщения: 9
Зарегистрирован: 12.12.2007 15:59:56

как перенаправить вывод моей консольной программы в ф

Сообщение Aisa »

Программа пользуется обычным writeln'ом. Не получается перенаправить вывод в файл - при запуске типа prg.exe > file.ext создается пустой файл (на экран в это время тоже ничего не выводится). Само собой, она все же что-то выводит, если ее просто запустить.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

А причём здесь FreePascal
record
новенький
Сообщения: 29
Зарегистрирован: 11.02.2006 15:34:51

Сообщение record »

$ 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

У меня переправляет. :D
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Aisa
Текст программы - в студию!
Aisa
незнакомец
Сообщения: 9
Зарегистрирован: 12.12.2007 15:59:56

Сообщение Aisa »

Mr.Smart писал(а):А причём здесь FreePascal

Притом, что я на нем пишу. Это вопрос не по паскалю, как языку, а по компилятору freepascal.


Vadim писал(а):Aisa
Текст программы - в студию!

вот сэмпл (во всем виноват crt, как я понял, но мне он нужен)

Код: Выделить всё

uses crt;
begin
  writeln('test');
end.


add:
Из crt я использую gotoxy, wherey, clreol и readkey. Если эту функциональность можно получить другим образом - тоже вариант. Сейчас я уже не нуждаюсь в перенаправлении - обошелся, но пришлось именно обходиться. Хотелось бы иметь простое решение в следующий раз.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Aisa
Действительно, есть такая фишка. Виновато тут не совсем Crt.
Дело в том, что в WinAPI есть две группы функций по работе с консолью:
1. Примитивная, которая только выводит на консоль что-нибудь и считывает оттуда данные. Write\Read\Ln, если не подключать Crt, базируется на этих примитивных функциях.
2. Продвинутая, более изощрённая, но работает она уже не с консолью непосредственно, а с буфером консоли или, другими словами, с некоей виртуальной консолью. Естественно Crt основано на этой самой второй группе функций, по другому просто не получится.
Ответить