salut à tous!! je voudrais savoir comment ecrire dans un fichier binaire, j'ai atendu dire que celà me permetrait aussi d'avoir une taille de fichier plus léger par rapport à un fichier texte.Quelqu'un pourait m'aider s'il vous plait?mici beaucoup.
Tu obtiens un fichier typé qui offre les possibilités suivantes
connaitre le nombre d'enregistrements :
FileSise(recFich);
Lire directement un enregistrememt :
Seek(recFile,n);
data := read(f);
Si tu veux gagner encore plus de place, tu peux utiliser un Packed Record , cette notation interdit l'alignement des données : un octet n'occupe qu'un octet et non pas, comme en cas d'alignement, 2, 4 voire 8 octets !
Ton fichier sera alors compatible avec toutes les versions de ton
programme que tu pourrais compiler avec - par exemple - Delphi 4
(alignement sur 2 octets), ou Delphi 7 (alignement sur 8
octets par défaut !)
L'inconvénient peut être un léger ralentissement du programme gérant des données non alignées.
Les fonctions BlockRead et BlockWrite peuvent être utilisées avec tous
types de fichiers : les données sont écrites ou lues à partir d'un
buffer de ... n'importe quoi (byte, char, word, ect...). Il
vaut mieux savoir ce qu'on manipule !...
kenavo je suis d'accord avec toi pour ce qui concerne les lichiers non
typés . Mais les instructions blockwrite et blockread permettent de
lire et d'enregistrer des donnees de longueur variable. C'est une façon
simple de gerer des donnees contenant des datas et des champs de type
"memo" du genre que l'on trouve pour des fiches produits .
pour ecrire sous forme binaire il te faudra suivre des procedures suivantes:
soit declarer un fichier typé et utiliser la procedure write;
soit ouvrir le fichier avec rewrite(file,taille_de _l'enregistrement) avec aille_de _l'enregistrement:=1 et utiliser la procedure blockwrite(file,variable,sizeof(variable));
pour lire un tel fichier tu utilise les procedure reset et blockread avec les mêmes parametres.
Un fichier binaire, c'est plus court qu'un fichier texte surtout si tu enregistres autre chose de du texte !
Tu peux aussi, si tu n'as qu'un type de données à enregitrer, utiliser
les fichiers typés : un fichier de réels pour enregistrer des réels, un
fichier de TPoint pour enregistrer des points , etc...
ok merci,
est ce que c'est bon si j'ecris celà:
Type
TrecData = Record
Datteheur : TDateTime;
etat : string[2];
omc : byte;
country : byte;
common : word;
system : word;
net : word;
alarme : byte;
rssi : byte;
reserve : byte;
end;
var
Form1 : TForm1;
recFich : file of TrecData;
data : TrecData;
c'est bien un fichier typé?
a propo du blockread et blockwrite ceula concerne les fichier non typé?