Fin de fichier prématurée.

Résolu
cs_PHIL63 Messages postés 76 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 août 2010 - 27 févr. 2009 à 23:38
cs_PHIL63 Messages postés 76 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 août 2010 - 28 févr. 2009 à 18:10
Bonsoir à tous,
Je cherche à lire ligne par ligne un fichier texte. Jusque là pas de souci :)
Sur certains fichiers celà fonctionne parfaitement mais sur d'autres le programme sort de sa boucle de lecture certainement du fait d'une fin de fichier prématurée pour lui ( while not eof(F) ).
J'ai cherché dans l'aide de Delphi (D6) et j'ai trouvé une procédure nommée "SetCRLFMode" en faisant une recherche sur eof().

*********************
Détermine les conventions de fin de ligne et de fin de fichier des entrées/sorties des fichiers texte.

Unité

System

Catégorie

routines de fichiers texte

procedure SetCRLFMode(var T: Text; Enable: Boolean);

Description
Appelez SetCRLFMode pour déterminer la façon dont les routines de fichiers texte trouvent ou marquent la fin d'une ligne et la fin d'un fichier. Les routines concernées incluent Read, Write, Readln, Writeln, Eof, Eoln, SeekEof et SeekEoln. Si vous n'appelez pas SetCRLFMode, les conventions de fin de ligne et de fin de fichier sont déterminées par la valeur de la variable DefaultCRLFMode.

Par exemple :
var
  MyFile: Text;
begin
  SetCRLFMode(MyFile, True);
...
remplace DefaultCRLFMode pour activer les sauts de ligne DOS et les marqueurs EOF pour MyFile.
***********************

Le problème c'est que Delphi ne reconnait pas cette procédure SetCRLFMode et que j'ai droit à un joli "Identificateur non déclaré : SetCRLFMode"....
OK me dis-je, j'ai oublié de déclarer une unité.... si je rajoute l'unité "System" j'ai droit à un message d'erreur comme quoi l'unité est redéclarée ....

Donc si quelqu'un avait une idée

Merci
 

Philippe DROUET

4 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
28 févr. 2009 à 12:14
uses Classes;

var
  TextFile : TStringList;
begin
  TextFile := TStringList.Create;
  try
    TextFile.LoadFromFile('C:\monfchier.txt');
    { traitement }
    TextFile.SaveToFile('C:\MonFichier.copie.txt'); // sauvegarde si necessaire
  finally
    TextFile.Free;
  end;
end;

<hr size="2" width="100%" />
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
28 févr. 2009 à 12:19
Salut,
pourquoi ne pas utiliser un TStringList

il se charge de découper le fichier en ligne juste en le changeant

sinon si tu veux continuer à utiliser ta méthode donne nous le code qui charge, parcourt et contabilise tes lignes.

 
@+
Cirec

<hr siz="" />
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
28 févr. 2009 à 12:20
arf ... j'ai trop trainé pour poster mon message

 
@+
Cirec

<hr siz="" />
0
cs_PHIL63 Messages postés 76 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 août 2010
28 févr. 2009 à 18:10
Merci à tous les deux :)
Effectivement, je suis passé par une TStringList et ça fonctionne :)

Merci encore.

Philippe DROUET
0
Rejoignez-nous