Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Потоки

Автор: Анна 22.10.2008 23:30

Чтобы перенаправить поток с выхода на вход нужно использовать временный файл или нужен другой способ?

Автор: Lapp 23.10.2008 0:03

Цитата(Анна @ 22.10.2008 19:30) *
перенаправить поток с выхода на вход

Это типа замкнуть процесс сам на себя?
Хм.. Никогда не задумывался над этим..
Так на вскидку придумать как обойтись без промежуточного файла не могу. Мне кажется. не обойтись без него.

Автор: Анна 23.10.2008 0:08

http://www.ict.edu.ru/ft/002355/lab6.htm

К примеру, tr -d "[0-9]" < a.txt | sort | uniq > b.txt
Поток с удаленными [0-9] с выхода подать на вход для сортировки и т.д.

Автор: volvo 23.10.2008 1:05

Цитата
К примеру, tr -d "[0-9]" < a.txt | sort | uniq > b.txt
Поток с удаленными [0-9] с выхода подать на вход для сортировки и т.д.
Ну, и что? Я так тоже умею:
tasklist | sort
(поток с выхода tasklist подать на вход sort)... Конкретнее, в чем проблема? Тебе это что, на Паскале реализовать надо?

Автор: Анна 23.10.2008 1:24

Не знаю как реализовать на Паскале..

Автор: volvo 23.10.2008 23:59

Ну, поскольку ты молчишь, на каком Паскале тебе это надо реализовать, и что представляет из себя тот самый поток, то предложу тебе вот такой вариант (псевдокод, но реализация существует... Раздел не тот, чтоб приводить программу полностью) :

type
stream = list; { <--- обычный односвязный список }

procedure read_stream(var f: text): stream; { <--- вернет указатель на голову списка }
begin {...} end;
procedure write_stream(in_stream: stream; var f: text);
begin {...} end;
procedure tr(in_stream: stream; params: set of char): stream;
begin {...} end;
procedure sort(in_stream: stream): stream;
begin {...} end;

{ Вызывается все это вот так: }
write_stream(sort(tr(read_stream(f_in), ['0' .. '9'])), f_out);


И никаких временных файлов... В принципе, вместо f_out можно даже подставить тот же f_in...

Теперь насчет списка... Чем не поток? Тоже обрабатывается последовательно, как и текстовый файл...