2011-06-29 3 views
1

Je travaille sur un code hérité dans lequel il ya beaucoup de commandes WriteLn (F, '...') dispersées à peu près partout. Il y a quelques informations utiles dans ces commandes (quelles variables d'information contiennent, etc.), ainsi je préférerais ne pas le supprimer ou le commenter, mais je veux arrêter le programme d'écrire le dossier.Comment "désactiver" un flux de sortie de fichier

Y a-t-il un moyen pour que je puisse assigner la variable F afin que tout ce qui y est écrit soit ignoré? Nous utilisons la sortie de la console, donc ce n'est pas une option.

Répondre

4

Retourner depuis longtemps au bon vieux temps de DOS - Si vous affectez 'f' à l'appareil 'nul', alors il ne devrait pas y avoir de sortie.

assign (f, 'nul') 

Je ne sais pas si cela fonctionne toujours sous Windows.

Editer: Vous pouvez également affecter 'f' à un fichier - assignfile (f, 'c: \ 1.txt') - par exemple.

+0

Votre édition: la question dit «arrête le programme d'écriture du fichier». Comme une note, il est maintenant AssignFile (F, [...]) plutôt que d'attribuer – Despatcher

+0

Je vais essayer cela et revenir vers vous. – boileau

+0

Cela fonctionne :) Merci. – boileau

0

L'ouverture du périphérique null et la sortie de sortie vont probablement fonctionner. Sous DOS, la performance du périphérique NUL était étonnamment mauvaise IIRC (d'après ce que je comprends, il n'était pas tamponné, donc le système devait chercher NUL dans la table des périphériques lors du traitement de chaque octet) mais je ne serais pas du tout surpris si c'est amélioré sous les nouveaux systèmes. En tout cas, c'est probablement la chose la plus facile à faire à moins que vous ayez vraiment besoin de maximiser les performances. Si les performances sont critiques, il peut théoriquement être possible de surcharger la fonction WriteLn pour qu'elle ne fasse rien pour certains fichiers, mais je crois malheureusement qu'elle autorise des formes syntaxiques qui ne sont pas permises pour les fonctions définies par l'utilisateur.

Sinon, je suggère de faire une recherche/remplacement d'expression régulière pour commenter les instructions WriteLn d'une manière qui peut être restaurée mécaniquement.

+0

'cat HugeISOFile.iso> NUL' revient assez vite; Je suis sûr qu'il n'y a pas de problème de performance avec l'utilisation de 'NUL'! –

+0

@Cosmin Prund: Sous les variantes Unix, probablement. Pas sûr de sous Windows. En tout cas, je ne voulais pas que quiconque se fie à la solution sans test pour s'assurer qu'elle fonctionnerait de manière acceptable, puisque sous DOS, envoyer la sortie à NUL était en fait plus lent que de l'envoyer vers un fichier de disque dur! – supercat

+0

J'ai lancé le 'cat' sur Windows, pas sur Unix. –

Questions connexes