Помощь - Поиск - Пользователи - Календарь
Полная версия: Потоки
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Анна
Чтобы перенаправить поток с выхода на вход нужно использовать временный файл или нужен другой способ?
Lapp
Цитата(Анна @ 22.10.2008 19:30) *
перенаправить поток с выхода на вход

Это типа замкнуть процесс сам на себя?
Хм.. Никогда не задумывался над этим..
Так на вскидку придумать как обойтись без промежуточного файла не могу. Мне кажется. не обойтись без него.
Анна
http://www.ict.edu.ru/ft/002355/lab6.htm

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

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...

Теперь насчет списка... Чем не поток? Тоже обрабатывается последовательно, как и текстовый файл...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.