Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3068 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1535338
Opera140
Posté le 28-03-2007 à 16:29:47  profilanswer
 

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 ?

mood
Publicité
Posté le 28-03-2007 à 16:29:47  profilanswer
 

n°1535450
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 28-03-2007 à 20:45:47  profilanswer
 

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
n°1535772
aldo13000
Posté le 29-03-2007 à 13:25:31  profilanswer
 


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


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

n°1536080
Madmass
Posté le 29-03-2007 à 20:45:41  profilanswer
 

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
n°1537100
Opera140
Posté le 02-04-2007 à 09:24:09  profilanswer
 

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.

n°1537553
Madmass
Posté le 02-04-2007 à 21:49:56  profilanswer
 

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

n°1538351
Opera140
Posté le 04-04-2007 à 12:39:51  profilanswer
 

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');


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

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

 

Sujets relatifs
[Java] lecture d'un fichier : y'a un lézard quelque part...Application quitte sans avoir fermé un fichier ouvert en écriture
Iframe et fichier locauxFOR %%i do et resultat dans un fichier texte
macro inserer fichier ds un .docGestion du drag&drop de fichier sur une page internet?
Lire une carte à puce, identifier un n° et envoyer un ordre...[MATLAB] aide pour ecrire dans un fichier
enregistrer une table dans un fichier texteLire des articles d'1 serveur sur 1 autre serveur?MSSQL& XML, PHP,.NET
Plus de sujets relatifs à : Lire un fichier .txt et retranscrire ses information dans un autre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR