Seek(fichier,Seek(fichier,FileSize(fichier));
procedure enregistrer(e : TEmploye); {ajouter l'employé dans le fichier sequentielle} var fichier : TEmpFich; begin AssignFile(fichier, fichierTest); if FileExists(fichierTest) then Reset(fichier) else Rewrite(fichier); Seek(fichier, FileSize(fichier)); Write(fichier, e); CloseFile(fichier); end;
procedure remplirListe; var fichier : TEmpFich; emp : TEmploye; begin {si pas de fichier on se casse} if not FileExists(fichierTest) then Exit; {vide la liste pour éviter les doublons} fmPrinc.lstEmploye.Clear; AssignFile(fichier,fichierTest); Reset(fichier);{pour lire le fichier} Seek(fichier,0);{pour se plasser au début du fichier} while not Eof(fichier) do begin Read(fichier,emp); fmPrinc.lstEmploye.Items.Add(affEmployer(emp)); end;{while} CloseFile(fichier); // <- OUBLI !!!!!!!!!!!!!!!! end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSeek(fichier,FileSize(fichier));
//Truncate(fichier); Seek(fichier, FileSize(fichier)); Write(fichier, e);
unit uEmploye; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TEmploye = record Nom, Prenom: string[100]; Salaire: string[10]; Homme: boolean; { vrai: homme, faux: femme } end; {important car c'est la déclaration du type de fichier seq de type TPersonne} TEmpFich = file of TEmploye; TfmPrinc = class(TForm) lstEmploye: TListBox; Label1: TLabel; edNom: TEdit; Label2: TLabel; Label3: TLabel; edPrenom: TEdit; edSalaire: TEdit; btnAjouter: TButton; btnSupprimer: TButton; btnQuit: TButton; btnModifier: TButton; procedure btnQuitClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure edNomChange(Sender: TObject); procedure edPrenomChange(Sender: TObject); procedure edSalaireChange(Sender: TObject); procedure btnAjouterClick(Sender: TObject); procedure btnSupprimerClick(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var fmPrinc: TfmPrinc; const fichierTest : String = 'C:\employeTest.txt'; implementation {$R *.dfm} function affEmployer(e : TEmploye) : String; begin result := e.Nom; end; procedure remplirListe; var fichier : TEmpFich; emp : TEmploye; begin {si pas de fichier on se casse} if not FileExists(fichierTest) then Exit; {vide la liste pour éviter les doublons} fmPrinc.lstEmploye.Clear; AssignFile(fichier,fichierTest); Reset(fichier);{pour lire le fichier} Seek(fichier,0);{pour se plasser au début du fichier} while not Eof(fichier) do begin Read(fichier,emp); fmPrinc.lstEmploye.Items.Add(affEmployer(emp)); end;{while} end; procedure gestionBtnAjout; begin if (fmPrinc.edPrenom.Text '') or (fmPrinc.edPrenom.Text '') or (fmPrinc.edSalaire.Text = '') then fmPrinc.btnAjouter.Enabled := False else fmPrinc.btnAjouter.Enabled := True; end; procedure gestionBtnSupp; begin {if fmPrinc.lstEmploye.ItemIndex < 0 then fmPrinc.btnSupprimer.Enabled := False else fmPrinc.btnSupprimer.Enabled := True} end; procedure gestionBouton; begin gestionBtnAjout; gestionBtnSupp; end; procedure viderChamp; begin fmPrinc.edNom.Text := ''; fmPrinc.edPrenom.Text := ''; fmPrinc.edSalaire.Text := ''; end; procedure TfmPrinc.btnQuitClick(Sender: TObject); begin Close; end; procedure TfmPrinc.FormCreate(Sender: TObject); begin gestionBouton; remplirListe; end; procedure enregistrer(e : TEmploye); {ajouter l'employé dans le fichier sequentielle} var fichier : TEmpFich; begin AssignFile(fichier,fichierTest); if not FileExists(fichierTest) then Exit; Rewrite(fichier); Seek(fichier,Seek(fichier,FileSize(fichier)); Truncate(fichier); Write(fichier, e); CloseFile(fichier); end; procedure TfmPrinc.btnAjouterClick(Sender: TObject); var emp : TEmploye; begin emp.Nom := edNom.Text; emp.Prenom := edPrenom.Text; emp.Salaire := edSalaire.Text; //lstEmploye.Items.Add(affEmployer(emp)); enregistrer(emp); remplirListe; viderChamp; gestionBouton; end; procedure supprimer(nom : String); {supprimer l'employer du fichier sequ} begin ShowMessage('l''employé ' + nom + ' a été supprimer'); end; procedure TfmPrinc.btnSupprimerClick(Sender: TObject); begin supprimer(lstEmploye.Items.Strings[lstEmploye.ItemIndex]); lstEmploye.Items.Delete(lstEmploye.ItemIndex); end; {###############################################} procedure TfmPrinc.edNomChange(Sender: TObject); begin gestionBouton end; procedure TfmPrinc.edPrenomChange(Sender: TObject); begin gestionBouton end; procedure TfmPrinc.edSalaireChange(Sender: TObject); begin gestionBouton end; end.