FileSize

van6071 Messages postés 20 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 15 mars 2006 - 14 mars 2006 à 17:13
van6071 Messages postés 20 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 15 mars 2006 - 15 mars 2006 à 09:55
Bonjour,



Peut-on imposer une valeur à FileSize ? et si oui comment.

j'explique un peu plus précisemment. La procédure consiste à supprimer
une ligne dans un fichier. Donc je récupère une ligne par
l'intermédiaire d'un TStringGird et je réécrits mon fichier par
une boucle Repeat Until not Eof(). Le problème c'est que ma dernière
ligne est en double d'ou ma question peut-on imposer une valeur à
FileSize de façon a occulter cette ligne et pouvoir éventuellemment
réecrire dessus.



merci

2 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
15 mars 2006 à 04:47
non tu ne peu pas.
FileSize proviens directement de la taille réel du fichier.

si tu as une ligne en double c'est que ta boucle est mal faite.

je te deconseil d'ailleur d'utiliser Repeat Until mais plutot :

while not Eof(F) do begin ... end;

de plus en mode ecriture Eof(F) change constament.

Repeat Until c'etait bon en turbo pascal quand While n'etait pas implementée.

probleme de Repeat : La séquence est toujours exécutée au moins une fois car expression n'est évaluée qu'après la première itération.

avantage de While : L'instruction while exécute répétitivement son instruction, en testant expression avant chaque itération. Tant que expression renvoie True, l'exécution se poursuit.

une boucle d'ecriture dans un fichier s'ecrit TOUJOURS de cette façon :

var F : File of [TypeFile]
begin
try
AssignFile(F,FileName);
Reset(F); [Mode L/W, lecture/ecriture]
// ou
Rewrite(F); [Mode creation, ecriture seule]
// ou
Append(F); [Mode ajout, ecriture a la fin]
... code d'ecriture / lecture ...
... Read/Write, BlockRead/BlockWrite ...
Flush(F); [si on utilise Append(F)]
finally
CloseFile(F);
end;
end;


Pour lire dans une fichier on utilise generalement la boucle While not EOF(F) do ...
Pour l'ecriture dans un fichier il n'est pas conseiller d'utiliser EOF mais vos propres controls de fin d'ecriture.

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
0
van6071 Messages postés 20 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 15 mars 2006
15 mars 2006 à 09:55
Merci pour tes explications très claires et précises

A+
0
Rejoignez-nous