Bonjour,
J'écris un fichier texte avec la fonction WriteLn et curieusement l'écriture ne va pas audela de 27 lignes. Faut-il préalablement dimensionner le nombre de lignes que l'on va écrire ?
Bonne journée à tous
Bonjour,
J'écris un fichier texte avec la fonction WriteLn et curieusement l'écriture ne va pas audela de 27 lignes. Faut-il préalablement dimensionner le nombre de lignes que l'on va écrire ?
Bonne journée à tous
A priori non. Voici un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 program ex01; {$APPTYPE CONSOLE} uses SysUtils; var f1 : TextFile; i1 : integer ; begin assignFile(f1,'test.txt') ; rewrite (f1) ; for i1 := 1 to 30 do writeln (f1,'test '+inttostr(i1)) ; closeFile(f1); end.
En fonction des Delphi, WriteLn n'est pas immédiat, dans le vieux Delphi, il y avait un tampon d'écriture, il a été supprimé car cela pouvait provoquer des pertes de données !
Le tampon devait être de 16K ou 32K maintenant, ça doit être 128o seulement
Sinon, c'est un problème qui revient souvent Fichier txt - Pb de taille !
Tu as bien un CloseFile à la fin ?
Flush ne doit plus faire grand chose, a vérifier tout de même !
le fichier est écrit en une seule fois ou alors tu fais un Append ?
Comme 27 n'est pas loin de 26, tu n'écris que du texte ?
Ce code peu semble générer un fichier texte limité à 27 lignes !
Cela fait la même chose avec le caractère 14 !Remarque : Si un Ctrl+Z (ASCII 26) est présent dans le dernier bloc de 128 octets du fichier, la position de fichier en cours est définie de façon à ce que le prochain caractère ajouté remplace le premier Ctrl+Z du bloc. De cette façon, il est possible d'ajouter un texte à la fin d'un fichier qui se termine par un Ctrl+Z.
colorid, un peu de code nous aiderait sûrement à... t'aider.
Ok jusq'à la ligne 15
Mais à partir de la ligne 15 j'écris du ligne à ligne sur plus de 30 lignes et quand je relis le fichier avec wordPad ou le blocNote à partir de la ligne 27 je n'ai plus de ligne
Ok !
C'est le manque de CloseFile(F) qui provoque l'arrêt de l'écriture. Je ne l'avais pas encore mis car le code d'écriture n'était pas terminé
???
Sinon, cela ne devait pas être 27 mais un multiple de 128 (en comptant +2 à chaque ligne)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager