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
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
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]
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+
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]
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...
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]
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager