1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| unit uStream_Record;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
Label4: TLabel;
edChemFi: TEdit;
GroupBox2: TGroupBox;
Label1: TLabel;
edNom: TEdit;
Label2: TLabel;
edPrenom: TEdit;
Label3: TLabel;
edAge: TEdit;
chkBoxPresent: TCheckBox;
bAjouterEnregistrement: TSpeedButton;
bLire: TSpeedButton;
edNBEnregistrements: TEdit;
Label5: TLabel;
edNumEnreg: TEdit;
Label7: TLabel;
procedure FormCreate(Sender: TObject);
procedure bAjouterEnregistrementClick(Sender: TObject);
procedure bLireClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
type TEnregistrement=record
Nom,Prenom : string[30];
Age : integer;
Present : Boolean;
end;
var UnEnregistrement : TEnregistrement;
TailleFi,NBEnregistrements,NumEnreg : Longint;
FS : TFileStream;
implementation
{$R *.DFM}
function RepAppli : string; { renvoie Rep avec \ terminal }
begin RepAppli:=ExtractFilePath(Application.ExeName); end;
procedure TForm1.FormCreate(Sender: TObject);
begin edChemFi.text:=RepAppli+'_Essai.dat';
if FileExists(edChemFi.text) then
begin FS:=tFileStream.Create(edChemFi.text,fmOpenRead);
TailleFi:=FS.Size;
NBEnregistrements:=TailleFi div SizeOf(TEnregistrement);
edNBEnregistrements.text:=IntToStr(NBEnregistrements);
FS.Free;
end else edNBEnregistrements.text:='0';
end;
procedure TForm1.bAjouterEnregistrementClick(Sender: TObject);
begin if Not FileExists(edChemFi.text)
then FS:=tFileStream.Create(edChemFi.text,fmCreate)
else FS:=tFileStream.Create(edChemFi.text,fmOpenWrite);
with UnEnregistrement do begin
Nom :=edNom.text;
Prenom :=edPrenom.text;
Age :=StrToInt(edAge.text);
Present:=chkBoxPresent.Checked;
end;
TailleFi:=FS.Size;
FS.Position:=TailleFi;
FS.Write(UnEnregistrement,SizeOf(TEnregistrement));
TailleFi:=FS.Size;
NBEnregistrements:=TailleFi div SizeOf(TEnregistrement);
edNBEnregistrements.text:=IntToStr(NBEnregistrements);
FS.Free;
end;
procedure TForm1.bLireClick(Sender: TObject);
begin if Not FileExists(edChemFi.text) then EXIT;
FS:=tFileStream.Create(edChemFi.text,fmOpenRead);
NumEnreg:=StrToInt(edNumEnreg.text);
FS.Position:=(NumEnreg-1)*SizeOf(TEnregistrement);
FS.Read(UnEnregistrement,SizeOf(TEnregistrement));
with UnEnregistrement do begin
edNom.text:=Nom;
edPrenom.text:=Prenom;
edAge.text:=IntToStr(Age);
chkBoxPresent.Checked:=Present;
end;
FS.Free;
end;
end. |
Partager