Как «отключить» поток вывода файла - PullRequest
1 голос
/ 29 июня 2011

Я работаю над неким устаревшим кодом, в котором есть много команд WriteLn (F, '...'), разбросанных практически повсеместно. В этих командах содержится некоторая полезная информация (что содержат информационные переменные и т. Д.), Поэтому я бы предпочел не удалять ее и не комментировать ее, но я хочу остановить программу от записи файла.

Можно ли как-нибудь назначить переменную F, чтобы что-либо записанное в нее игнорировалось? Мы используем вывод консоли, так что это не вариант.

Ответы [ 2 ]

4 голосов
/ 29 июня 2011

Возвращаясь к старым добрым временам DOS - Если вы назначите 'f' устройству 'nul', вывод не будет.

assign (f, 'nul')

Я не знаю, работает ли это по-прежнему в Windows.

Edit: Вы также можете назначить 'f' для файла - например, assignfile (f, 'c: \ 1.txt').

0 голосов
/ 29 июня 2011

Открытие нулевого устройства и пропуск туда вывода, вероятно, сработает. Под DOS производительность устройства NUL была удивительно плохой IIRC (насколько я понимаю, он не был буферизован, поэтому система должна была искать NUL в таблице устройств при обработке каждого байта), но я не удивился бы если это улучшено под более новыми системами. В любом случае, это, вероятно, самое простое, что вы можете сделать, если вам действительно не нужно максимизировать производительность. Если производительность критична, теоретически может быть возможно переопределить функцию WriteLn, чтобы она ничего не делала для определенных файлов, но, к сожалению, я считаю, что она допускает синтаксические формы, которые были недопустимы для любых пользовательских функций.

В противном случае я бы предложил выполнить поиск / замену регулярного выражения, чтобы закомментировать операторы WriteLn способом, который можно механически восстановить.

...