Lire un fichier .txt et retranscrire ses information dans un autre

Lire un fichier .txt et retranscrire ses information dans un autre - Delphi/Pascal - Programmation

Marsh Posté le 28-03-2007 à 16:29:47    

Salut !
 
Je cherche à lire un fichier .txt et a stocker ses informations dans un tableaux de chaines pour les réutiliser plus tard.
Pour tester si le programme lit bien mon fichier, je veux retranscrire le contenu dans un autre fichier .txt.
J'ai donc écrit ceci :
 

Code :
  1. var
  2. Ligne : string;
  3. Liste, Liste2 :Textfile;
  4. TListe : array of string;
  5. i : Integer
  6. .
  7. .
  8. .
  9. AssignFile(Liste,'C:\MonPath\Liste.txt');
  10. Reset(Liste);
  11. AssignFile(Liste2,'C:\MonPath\Liste2.txt');
  12. Rewrite(Liste2);
  13. i:= 0;
  14. while not EOF(Liste) do
  15.   begin
  16.     Readln(Liste, Ligne);
  17.     TListe[i] := Ligne;
  18.     Writeln(Liste2, TListe[i]);
  19.      i := i+1;
  20.   end;
  21. .
  22. .
  23. .


 
Et donc ça ne marche pas.
J'ai essayer en créant le fichier avant et en utilisant Append() au lieu de Rewrite(), mais l'effet est le même.
 
Qu'est ce qui cloche ?

Reply

Marsh Posté le 28-03-2007 à 16:29:47   

Reply

Marsh Posté le 28-03-2007 à 20:45:47    

Salut
 
Je me demande si, quand tu déclare ton array of string tu devrait pas faire plutôt:
 
TListe : array [1..1000] of string;
 
enfin 1000 j'ai mis large ça dépend de tes txt
 
peut être qu'on peut sans mais si ça marche pas ça vient surement de ça, quand tu fait Writeln(Liste2, TListe[i]); si Tliste[i] est vide ou pas bon c'est sûr de ne pas marcher
 
déja pour tester fait: Writeln(Liste2, Ligne);
 
tu auras déja une copie
 
et n'oublie pas les closefile(liste1); et closefile(liste2);  :)


Message édité par Flagad'aware le 28-03-2007 à 20:47:24
Reply

Marsh Posté le 29-03-2007 à 13:25:31    


 Salut ,
 
 Tu peux utiliser SetLength  :
 
 while not EOF(Liste) do
  begin
  ...
   SetLength(TListe , i+1);
   Readln(Liste , TListe(i);
   ...  
  end;
 


---------------

Reply

Marsh Posté le 29-03-2007 à 20:45:41    

je pense que le code ne marche pas parceque tu lui declare un tableau dynamique (array of string) et que tu le remplis sans lui avoir prealablement donné une taille a l'aide de setlength.

 

au delà de ça je ne comprend pas pourquoi tu t'encombre de ce tableau, tu peux tres bien ecrire directement a partir de ce que tu lis.

Code :
  1. var
  2.        Ligne : string;
  3.        Liste, Liste2 :Textfile;
  4.      AssignFile(Liste,'C:\MonPath\Liste.txt');
  5.      Reset(Liste);
  6.      AssignFile(Liste2,'C:\MonPath\Liste2.txt');
  7.      Rewrite(Liste2);
  8.      while not EOF(Liste) do
  9.      begin
  10.          Readln(Liste, Ligne);
  11.          Writeln(Liste2, Ligne);
  12.      end;


Message édité par Madmass le 29-03-2007 à 20:46:08
Reply

Marsh Posté le 02-04-2007 à 09:24:09    

En fait c'est du tableau dont j'ai besoin, pas de Liste2.txt, je l'utilise simplement pour contrôler que ma partie lecture est bonne (et accessoirement pour apprendre la partie écriture).
 

Code :
  1. var
  2.   Ligne : string;
  3.   i : Integer;
  4.   Liste, Liste2 : Textfile;
  5.   TListe : array [1..100] of string;
  6. begin
  7.   for i:=0 to 100 do
  8.     begin
  9.       TListe[i] := '0';
  10.     end;
  11.   i :=0;
  12.   try
  13.     AssignFile(Liste,'C:\MonPath\Liste.txt');
  14.     Reset(Liste);
  15.     AssignFile(Liste2,'C:\MonPath\Liste2.txt');
  16.     Rewrite(Liste2);
  17.     while not EOF(Liste) do
  18.       begin
  19.         Readln(Liste, Ligne);
  20.         TListe[i] := Ligne;
  21.         Writeln(Liste2, TListe[i]);
  22.         i := i+1;
  23.       end;
  24.   finally
  25.     CloseFile(Liste);
  26.     CloseFile(Liste2);
  27. end;


 
Voilà un code plus complet, peut être y a t-il des erreurs avant qui empêchent le déroulement correct de l'opération.

Reply

Marsh Posté le 02-04-2007 à 21:49:56    

bah....tu as quoi comme erreur car chez moi ton code marche parfaitement et copie bien le fichier. (il remplit aussi le tableau).

Reply

Marsh Posté le 04-04-2007 à 12:39:51    

Je ne sais pas d'ou venait l'erreur.
Tout ce que je sais, c'est que finalement j'ai utilisé un TStringList au lieu d'un tableau standardet que ça fonctionne parfaitement.
 

Code :
  1. DirSTL.LoadFromFile('C:\MonPath\Liste.txt');
  2.   ShowMessage('Nombre de fichiers : ' + intToStr(DirSTL.count));
  3.   Memo1.Text := DirSTL.Text;
  4.   DirSTL.SaveToFile('C:\MonPath\Liste2.txt');

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed