écriture dans un fichier binaire [Résolu]

Signaler
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
-
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
-
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.

6 réponses

Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
3
Tout à fait, Elementalord !



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 !...



Ken@vo
<hr size ="2" width="100%">Code, Code, Codec !




http://www.pourflorenceethussein.org/

[%3C/body ]
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
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 .

j.len.
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
11
salut,

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.

bonne prog;
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
3
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...



Ken@vo

<hr size="2" width="100%">Code, Code, Codec !




http://www.pourflorenceethussein.org/

[%3C/body ]
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
1
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é?
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
1
Je vous remercie d'avoir m'aider.Merci encore.