begin process at 2013 05 24 03:27:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Système

 > 

Fichier & Disque

 > 

Comment supprimer une donnée dans un fichier sequentiel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment supprimer une donnée dans un fichier sequentiel

samedi 6 octobre 2012 à 10:09:45 | Comment supprimer une donnée dans un fichier sequentiel

roironm


Hello à tous,

J'aimerai supprimer un enregistrment dans un fichier seq, qqun connait la méthode pour réalisé cette action.

Merci

samedi 6 octobre 2012 à 13:03:59 | Re : Comment supprimer une donnée dans un fichier sequentiel

korgis

Membre Club
Salut,

tu peux lire et stocker tes enregistrements dans un tableau dynamique, te positionner dans ce tableau sur l'index de l'enregistrement à supprimer, décaler les enregistrements qui suivent vers l'index inférieur, régler la longueur du tableau dynamique à Longueur - 1, puis écrire les enregistrements stockés dans le tableau dans le fichier en utilisant Rewrite.
Ça a l'air un peu complexe, mais avec un peu de méthode, ça me parait être la meilleure solution.

Bon courage.
samedi 6 octobre 2012 à 14:48:50 | Re : Comment supprimer une donnée dans un fichier sequentiel

roironm

Merci korgis pour ta réponse.

Cependant je n'ai pas utilisé de tableau mais seulement un deuxième fichier seq.

il me sert aussi pour les modifications donc c'est pratique.

voici le code de suppression
Code Delphi :
procedure supprimer(nom : String); {supprimer l'employer du fichier sequ}
var
  fOld, fNew : TEmpFich;
  emp : TEmploye;
begin
  AssignFile(fOld, fichierOld);
  if not FileExists(fichierOld) then Exit;
  Reset(fOld);
  //création ou utilisation de fNew qui stock les éléments non supprimés
  AssignFile(fNew,fichierNew);
  if FileExists(fichierNew) then
    Reset(fNew)
  else
    Rewrite(fNew);
  Seek(fNew,0);
  Truncate(fNew);
  Seek(fOld,0);
  while not Eof(fOld) do
    begin
       //recherche de l'élément à supprimé
       Read(fOld, emp);
       if not(emp.Nom = nom) then
         {ecriture des élément non supprimé dans le fNew}
         begin
           Write(fNew, emp);
           //ShowMessage(affEmployer(emp) + emp.Prenom + emp.Salaire + ' est copier dans le nouveau fichier');
         end;{if}
  end;{while}

  {ecraser les infos de fOld avec les infos de fNew}
  Rewrite(fOld);
  Seek(fOld,0);
  Truncate(fOld);
  Seek(fNew,0);
  while not Eof(fNew) do
    begin
     Read(fNew, emp);
     Write(fOld, emp);
  end;{while}

  CloseFile(fOld);
  CloseFile(fNew);
end;


et le code pour la modification

Code Delphi :
procedure modifier(nom : String);
var
  fichier : TEmpFich;
  emp : TEmploye;
begin

   fmPrinc.btnEnregistrerModif.Visible := True;
   {remplire les champs avec les info}
   {trouver les infos dans le fichier seq avec le nom}
   if not FileExists(fichierOld) then Exit;
   AssignFile(fichier, fichierOld);
   Reset(fichier);
   Seek(fichier,0);
   while not Eof(fichier) do
   begin
      Read(fichier, emp);
      if UpperCase(emp.nom) = UpperCase(nom) then
       begin
           fmPrinc.edNom.Text := emp.nom;
           fmPrinc.edPrenom.Text := emp.Prenom;
           fmPrinc.edSalaire.Text := emp.Salaire;
           if emp.Homme then
              fmPrinc.rdbHomme.Checked := True
           else
             fmPrinc.rdbFemme.Checked := True;
           empPourModif := emp;
       end;{if nom}
   end;{while}

   {désactivation du bouton ajout pour éviter les doublons}
   fmPrinc.btnAjouter.Enabled := False;
end;

procedure enregistrerModif;
var
  emp : TEmploye;
  fOld, fNew : TEmpFich;
begin
  {Supprimer l'ancien ref du fichier old}
  {puis ajouter la nouvelle ref dans le fichier old}
  AssignFile(fOld,fichierOld);
  AssignFile(fNew,fichierNew);
  if not FileExists(fichierOld) then Exit;
  Reset(fOld);{lecture}
  Rewrite(fNew);{ecriture}
  Seek(fOld,0);
  Seek(fNew,0);
  Truncate(fNew);

  while not Eof(fOld) do
  begin
    Read(fOld, emp);
    if not(UpperCase(emp.Nom) = UpperCase(empPourModif.Nom)) then
      Write(fNew,emp);
  end;{while}
  {l'ancien élément avec ses anciennes valeurs n'a pas été copier dans le nouveau fichier}

  {ajout de l'ancien élément avec les nouvelles valeurs dans le fichier}
  emp.Nom := fmPrinc.edNom.Text;
  emp.Prenom := fmPrinc.edPrenom.Text;
  emp.Salaire := fmPrinc.edSalaire.Text;
  emp.Homme := fmPrinc.rdbHomme.Checked;

  Write(fNew,emp);

  {Copie du new vers old}
  Rewrite(fOld);
  Seek(fOld,0);
  Truncate(fOld);
  Seek(fNew,0);
  while not Eof(fNew) do
    begin
     Read(fNew, emp);
     Write(fOld, emp);
  end;{while}
  remplirListe;
  viderChamp;
  {cacher le bouton enregistrer modif pour éviter les erreurs user}
  fmPrinc.btnEnregistrerModif.Visible := False;
  CloseFile(fOld);
  CloseFile(fNew);


end;
lundi 8 octobre 2012 à 11:08:41 | Re : Comment supprimer une donnée dans un fichier sequentiel

yanb

Salut,
j'ai la même opinion que Korgis, je passerai par un tableau dynamique, ceci éviterai de faire une gymnastique dans les fichiers...
Et au niveau comprehension ca serait peut-être plus simple.
ex : FTableauEmploye : array of TEmploye;
@+
lundi 8 octobre 2012 à 13:28:43 | Re : Comment supprimer une donnée dans un fichier sequentiel

roironm

Salut,

oui c'est vrai qu'au niveau compréhension c'est pas top.

Mais j'ai découvert le TClientDataSet pour générer un .xml est-ce mieux?


Cette discussion est classée dans : fichier, donnée, supprimer, sequentiel


Répondre à ce message

Sujets en rapport avec ce message

Comment on fait pour ajouter ou supprimer une ligner avec les champs dans une base de donnée ? [ par Zangdar ] Comment on fait pour ajouter ou supprimer une ligne avec les champs dans une base de donnée ?http://www.zangdar.fr.st Lire & Supprimer un caractère dans un fichier [ par Encore1ben ] Bonjour,J'ai repris le code source de mon prédécesseur concernant une application qui est censé formater un fichier texte en un autre. Malheureusement Fichier relatif, supprimer un record ou un enregistrement [ par lebossbxl ] Bonjour, j'ai du mal à effacer un record dans un fichier si vous saviez me mettre un code source ce serait gentil! Merci d'avance supprimer des fichier [ par bobstien ] Bonjour, J essaie de supprimer tout les fichier d un répertoire dans un FileListBox. J arrive à supprimer un seul fichier avec deleteFile Mais toute l Supprimer un fichier dans le cache Internet [ par Pingouin57 ] Salut à tous, Voila mon problème, mon programme télécharge régulièrement un fichier (un fichier *.ini) à partir d'internet, via URLDownloadToFile pou sepprime fichier [ par adec0127 ] Salut un prob.. dans mon l'application je ne arrive pas a supprimer les un fichier sous Windowsc'est un fichier que en supprime que sous dos comment f supprimer fichier [ par jerome57440 ] Bonjour, dans mon programme j'ai une procedure qui permet de supprimer un fichier.Lorsque j'execute j'ai une erreur mais elle ne seproduit pas toujour Comment supprimer une ligne dans un fichier Text? [ par NicoIRIS ] Bonjour à tous,Voici mon petit problème... Je souhaiterai savoir s'il éxiste une méthode qui permmettrait de supprimer une ligne dans un fichier Text. Supprimer des données d'un fichier [ par ytillang30400 ] Bonjour à tous. Pour ajouter des données dans un fichier, on a "write", "append", etc... Mais pour supprimer des données sans avoir recours à un aut supprimer un fichier commençant par un point à la racine [ par JackNUMBER ] Bonjour à tous ! Étonnamment je n'arrive pas à supprimer un fichier nommé [b].blabla.txt[/b] à la racine d'un disque amovible...... [b]DeleteFile('G:\


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,254 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales