Страница 1 из 1

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

СообщениеДобавлено: 26.03.2009 02:49:58
Aisa
Программа пользуется обычным writeln'ом. Не получается перенаправить вывод в файл - при запуске типа prg.exe > file.ext создается пустой файл (на экран в это время тоже ничего не выводится). Само собой, она все же что-то выводит, если ее просто запустить.

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

СообщениеДобавлено: 26.03.2009 11:30:09
Mr.Smart
А причём здесь FreePascal

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

СообщениеДобавлено: 26.03.2009 12:40:26
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

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

СообщениеДобавлено: 26.03.2009 14:48:23
Vadim
Aisa
Текст программы - в студию!

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

СообщениеДобавлено: 27.03.2009 00:35:33
Aisa
Mr.Smart писал(а):А причём здесь FreePascal

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


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

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

Код: Выделить всё
uses crt;
begin
  writeln('test');
end.


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

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

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