Les fichiers

Signaler
Messages postés
1
Date d'inscription
mercredi 14 janvier 2009
Statut
Membre
Dernière intervention
14 janvier 2009
-
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
-
Bonjour,
Je travaille sur un projet personnel en ce moment qui implique la gestion de fichier.
J'ai créer des element de type "Record" que je sauve dans un fichier.
Je suis capable d'ajouter des éléments et de modifier sans probleme.

Par contre, je voudrais savoir s'il existe un moyen de supprimer une ligne en particulier dans un fichier.
Je connais la fonction "truncate", mais elle élimine tout ce qui se trouve apres l'endroit défini dans le fichier.

Est-ce possible de seulement supprimer une ligne?

merci

2 réponses

Messages postés
251
Date d'inscription
dimanche 7 décembre 2003
Statut
Membre
Dernière intervention
11 novembre 2016

bonjour

une première voie
charger le fichier dans un tableau dynamique
supprimer la ligne du tableau
puis sauvegarder le tableur dans le fichier

Valable si fichier pas trop gros bien sur
a+
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
Deuxième solution :
dans ton record tu ajoute un champ (n'importe quoi) disons Type : byte

Type vaut toujours 1 , sauf quand tu veux que cet enregistrement ne soit pas lu ...
Donc si tu veux effacer un record bien précis , tu y accède avec ta recherche et tu mets une valeur differente de 1 à Type ( ou un boolean True si doit lire , false si doit être passé )

-> C'est un effacement logique (ton enregistrement existe encore mais tu ne le lis plus, c'est "comme si" il était effacé)

Bien sur Après un certain nombre (que tu décides) d'enregistrement effacé logiquement , tu réorganises ton fichier en effaçant physiquement tous les record effacés logiquement (ceux dont Type:=0)

-> plusieurs manières : soit comme l'a dit fBalien avec un tab dynamique
(donc tu parcours ton fichier et tu remplis  le tableau qu'avec des enregistrements présents )

Soit (j'ai pas testé mais je pense pas que sa poserais problème ) :
 tu lis ton fichier , et tu en créé un autre en même temps (tjs en passant au moment de la lecture les record avec Type:=0)

Voila