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

Langage Pascal Discussion :

[LG]suppression dans un fichier


Sujet :

Langage Pascal

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [LG]suppression dans un fichier
    j'ai un probleme avec mon prog qui est avec du graphisme je n'arrive pasa supprimer les enregistrements dand le fichier que mon prog manipule.

    s'ilvous plait je demande de l'aide

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 944
    Points : 59 444
    Points
    59 444
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    En général, pour supprimer des enregistrements dans un fichier, on dispose de deux solutions simples :

    1. Si le fichier est de taille raisonnable, la meilleure chose à faire est de charger tous les enregistrements en mémoire (dans un tableau ou dans une liste chaînée) puis de réécrire le fichier en omettant les enregistrements à supprimer.

    2. Si le fichier est vraiment énorme, il faut créer directement un nouveau fichier puis lire les enregistrements un à un dans le fichier d'origine et n'écrire dans le nouveau fichier que les enregistrements qui ne doivent pas être supprimés. A la fin du processus, le fichier d'origine est zingué et remplacé par le nouveau.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Tiens, je connaissais pas comme expression "zinguer"...

    Une autre solution. Depuis Dos version "je_sais_plus_combien", on peut ouvrir les fichiers en lecture/écriture.

    Donc : tu lis le dernier enregistrement, tu te places à la fin de ton fichier, et tu le réécris. Tu lis ensuite l'avant-dernier enregistrement (enfin, l'avant-dernier d'avant, ça devient comique), et tu l'écris par-dessus l'ancien dernier enregistrement. Je sens que je vais me perdre. Tu m'as suivi ?

    Bon, admettons que nous ayons ça :

    1
    2
    3

    Alors on a ensuite :

    1
    2
    3
    3

    Puis

    1
    2
    2
    3

    Et si on veut écrire à la position 2, alors on a :

    1
    X
    2
    3

    Oui ?

    Si tu n'as pas compris, redemande.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 944
    Points : 59 444
    Points
    59 444
    Billets dans le blog
    2
    Par défaut
    Euh, s'cusez, chef, mais j'as pas sûr d'avoir tout compris.

    Si le brave garçon doit supprimer l'enregistrement n° 2 ?
    Je suppose qu'il doit écraser le n° 2 par le n° 3, le 3 par le 4, etc. Mais comment être quitte du dernier enregistrement d'origine ? Est-il possible de fermer le fichier à la fin de l'avant-dernier ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Weups... Scusez-moi... J'étais pas très clair encore ce jour-là

    Bon, c'est pas grave, j'ai répondu complètement à côté de la plaque : j'ai donné une méthode pour ajouter des enregistrements.

    Donc, pour les supprimer (erm...) :

    Disons que nous voulons supprimer le deuxième. Alors on copie le 3ème sur le 2ème, puis le 4ème sur le 3ème, etc...

    Ensuite, on se place au début du dernier enrgistrement (Seek), et on tronque le fichier (Truncate).

    A+

    PS: Désolé pour le bon HS...
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 944
    Points : 59 444
    Points
    59 444
    Billets dans le blog
    2
    Par défaut
    Je n'avais pas pensé à Truncate... Merci !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Recherche ligne puis suppression dans un fichier
    Par jbarreau-mainson dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/01/2010, 11h40
  2. Détecter les suppression dans un fichier qui sert à alimenter une BDD
    Par yacinechaouche dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 15/07/2008, 15h42
  3. [C#]Ecriture/Suppression dans un fichier
    Par torNAdE dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/05/2006, 09h11
  4. suppression dans un fichier texte
    Par zchallal dans le forum C
    Réponses: 2
    Dernier message: 01/05/2006, 20h43
  5. Réponses: 14
    Dernier message: 01/12/2003, 17h47

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