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
|
interface
TParcelle = class
private
identifiant : integer;
nom_proprio : string;
x1 : real;
public
procedure WriteToStream(AStream: TStream);
procedure ReadFromStream(AStream: TStream);
end;
implementation
{ TParcelle }
procedure TParcelle.WriteToStream(AStream: TStream);
var
sz: Integer;
begin
// On peut écrire les entiers directement puisque leur taille est fixe
AStream.Write(identifiant, SizeOf(identifiant));
// Pour les chaînes, il vaut mieux stocker leur taille
sz:= Length(nom_proprio);
AStream.Write(sz, SizeOf(sz));
// On passe le premier caractère et le reste suit tout seul
AStream.Write(nom_proprio[1], sz);
// Pareil que pour les entiers
AStream.Write(x1, SizeOf(x1));
end;
procedure TParcelle.ReadFromStream(AStream: TStream);
var
sz: Integer;
begin
// On peut lire les entiers directement puisque leur taille est fixe
AStream.Read(identifiant, SizeOf(identifiant));
// Pour les chaînes, il faut commencer par lire leur taille
AStream.read(sz, SizeOf(sz));
SetLength(nom_proprio, sz);
AStream.Read(nom_proprio[1], sz);
// Pareil que pour les entiers
AStream.Read(x1, SizeOf(x1));
end;
procedure TestUtilisation;
var
fs: TFileSTream;
objet: TParcelle;
begin
// Sauvegarde
objet:= TParcelle.Create;
objet.nom_proprio:= 'Pierre Castelain';
fs:= TFileStream.Create('C:\test.bin', fmCreate);
try
objet.WriteToStream(fs);
finally
fs.Free;
end;
objet.Free;
// Lecture
objet:= TParcelle.Create;
fs:= TFileStream.Create('C:\test.bin', fmOpenRead);
try
objet.ReadFromStream(fs);
finally
fs.Free;
end;
MessageBox(0, PChar(objet.nom_proprio), 'Proprio', 0);
objet.Free;
end; |
Partager