elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 2005
-
31 mai 2005 à 11:52
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 2005
-
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.
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 31 mai 2005 à 19:41
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 !...
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 31 mai 2005 à 20:29
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 .
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 31 mai 2005 à 14:09
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.
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 31 mai 2005 à 16:35
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...
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 20051 31 mai 2005 à 17:37
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é?