IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

[GPC-FPC] Suppression-Copie Fichier


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Par défaut [GPC-FPC] Suppression-Copie Fichier
    Bonsoir!

    J'espère que vous pourrez me donner une réponse à la question que voici, après une brève explication.

    Dans une procédure, je dois supprimer un paragraphe (chaque paragraphe commençant par un caractère spécial donné) provenant d'un fichier texte. Je ne peux pas utiliser de tableau, le nombre de paragraphes dans le fichier étant non fixé. Le fichier en question est passé en paramètre de ma procédure (précédé d'un var, bien entendu).

    La méthode que j'ai imaginé et implémenté est la suivante:
    1. Je prends un fichier temporaire (déclaration dans la procédure + assignation du type assign(tmp, 'tmp.txt'))
    2. Je copie les lignes qui ne doivent pas être supprimées dans ce fichier.
    3. Je recopie le contenu du fichier temporaire dans le fichier de départ.
    4. Je supprime le fichier temporaire.

    Cependant, je trouve cela assez couteux en mémoire (deux fichiers) et en temps de calcul (copy-copy). N'y a-t-il pas moyen de faire mieux?
    J'ai essayé de trouver mieux mais à chaque fois que je mettais en place mes idées dans mon code...Ca n'aboutissait pas au résultat convenu.

    Merci d'avance.

    Akushiro

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Par défaut
    On va dire que in.txt est ton fichier d'entrée.
    1 : tu generes un fichier out.txt contenant les lignes devant être conservées.
    2 : tu renommes in.txt en in.bak par exemple
    3 : tu renommes out.txt en in.txt
    4: si tu veux tu effaces in.bak mais en cas d'erreur ça peu être bien de le garder.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Par défaut
    D'abord, merci pour la réponse

    Ensuite, je reprends pour voir si j'ai bien compris:

    1 : tu generes un fichier out.txt contenant les lignes devant être conservées.
    2 : tu renommes in.txt en in.bak par exemple
    3 : tu renommes out.txt en in.txt
    4: si tu veux tu effaces in.bak mais en cas d'erreur ça peu être bien de le garder.

    -->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    program test;
     
    var texte1,texte2;
     
    procedure editfile(var f1,f2:text);
    begin
            assign(f2,'out.txt');
            rewrite(f2);
            {Remplissage de f2 à partir de f1}
            close(f2);
            rename(f1,'in.bak');
            rename(f2,'in.txt');
            erase(f1);
    end;
     
    begin
            assign(texte1,'in.txt');
            editfile(texte1,texte2);
    end.
    Est-ce bien cela que tu voulais dire? Si oui, je n'ai pas droit à deux fichiers dans le programme principal...Donc je ne peux pas appliquer cette méthode. Sinon, peux-tu préciser s'il-te-plaît?

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Par défaut
    C'est bien à ce genre de chose que je pensais.

    Pourquoi cette limitation à une seul fichier ? C'est un exercice ?

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 968
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 968
    Par défaut
    Geo,
    Citation Envoyé par batyann811 Voir le message
    Pourquoi cette limitation à une seul fichier ? C'est un exercice ?
    Probablement, c'est d'ailleurs un exercice assez classique pour apprendre - un peu - à gérer des fichiers (ajouter, modifier, supprimer ...).

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Par défaut
    En effet, il s'agit d'une sorte d'exercice, disons que je ne peux pas me permettre (c'est plus un projet qu'un exercice) d'utiliser deux fichiers dans le programme principal. La solution que j'ai avancé est-elle donc la plus 'efficiente' en prenant la contrainte en considération?

Discussions similaires

  1. Copie, suppression de fichier sur le serveur
    Par maxr397 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 13/03/2008, 10h32
  2. [BATCH]Suppression de fichier
    Par alxkid dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/04/2004, 13h25
  3. Réponses: 4
    Dernier message: 16/04/2004, 08h20
  4. Auto suppression de fichier
    Par pato dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2004, 09h09
  5. Suppression de fichiers
    Par wasch dans le forum C++Builder
    Réponses: 6
    Dernier message: 20/11/2003, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo