écriture dans un fichier binaire [Résolu]

elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention - 31 mai 2005 à 11:52 - Dernière réponse : elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention
- 1 juin 2005 à 09:08
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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Kenavo 759 Messages postés vendredi 21 mars 2003Date d'inscription 1 octobre 2009 Dernière intervention - 31 mai 2005 à 19:41
3
Merci
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 ]

Merci cs_Kenavo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Kenavo
Meilleure réponse
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 31 mai 2005 à 20:29
3
Merci
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.

Merci jlen100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jlen100
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 31 mai 2005 à 14:09
0
Merci
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;
Commenter la réponse de jlen100
cs_Kenavo 759 Messages postés vendredi 21 mars 2003Date d'inscription 1 octobre 2009 Dernière intervention - 31 mai 2005 à 16:35
0
Merci
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 ]
Commenter la réponse de cs_Kenavo
elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention - 31 mai 2005 à 17:37
0
Merci
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é?
Commenter la réponse de elementalord
elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention - 1 juin 2005 à 09:08
0
Merci
Je vous remercie d'avoir m'aider.Merci encore.
Commenter la réponse de elementalord

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.