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
| Type
TMyRecord = record
n : Integer;
s : String;
end;
TMyRecordArray = Array of TMyRecord;
Procedure WriteRecords;
Var
AFileStream : TfileStream;
Index : Integer;
Begin
AFilestream := TFileStream.Create( NomFichier, FmCreate or FmOpenWrite);
AfileStream.Write( Length( MyRecordArray, 4)); // écrit le nombre d'items
For Index := 0 to high(MyRecordArray) do
Begin
AfileStream.Write( MyRecordArray.n, 4); // écrit la valeur de n
AfileStream.Write( length(MyRecordArray.s), 4); // écrit la taille du texte
AfileStream.Write( MyRecordArray.s[1], length(MyRecordArray.s)); // écrit le texte
End;
AFileStream.free;
End;
Procedure ReadsRecords;
Var
AFileStream : TfileStream;
Index, ItemsCount, StringSize : Integer;
Begin
AFilestream := TFileStream.Create( NomFichier, FmCreate OpenRead);
AfileStream.read( ItemsCOunt, 4); // lit le nombre d'items à lire
SetLength(MyRecordArray, ItemsCount); // met à longueur le tableau de records
For Index := 0 to ItemsCount - 1 do
Begin
AfileStream.Read( MyRecordArray.n, 4); // lit l'integer
AfileStream.Read( StringSize, 4); // lit la taille du texte
AfileStream.Read( MyRecordArray.s[1], StringSize); // lit le texte
End;
AFileStream.free;
End; |