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

  FORUM HardWare.fr
  Programmation
  Divers

  Editer automatiquement les valeurs d'un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Editer automatiquement les valeurs d'un fichier texte

n°1979191
MaisTuPico​lesEnPlus
une bière?
Posté le 30-03-2010 à 21:28:17  profilanswer
 

Bonjour ,
 
je n'y connait pas en programation mais à mon travail nous avons la possibilité de faire des macro via un logiciel d'émulation , mon but ici serais de remplacer les valeurs  
mises en évidence en ROUGE pas des autres valeurs que je choisirais via une base de donné ??. Le fichier texte serait alors édité mais juste les valeurs en rouge.
 

Spoiler :

"41020512
[tab field]
[tab field]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
"41020513
[newline]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
"41020525
[newline]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]

mood
Publicité
Posté le 30-03-2010 à 21:28:17  profilanswer
 

n°1979207
Lan Wezel
Posté le 30-03-2010 à 22:11:59  profilanswer
 

Eh bien si on ne sais pas de quel langage tu disposes (quel type de macros ? VB ? ) ça va être compliqué de te répondre.
 
Si tu est sous linux, la commande sed fera ton bonheur.
sed -e 's/motif_a_remplacer/nouveau_motif/g'

n°1979284
MaisTuPico​lesEnPlus
une bière?
Posté le 31-03-2010 à 07:47:00  profilanswer
 

@Lan Wezel
 
et bien c'est un émulateur pour émuler un logiciel de gestion de stock donc je ne sais pas vraiment ... :/ j'envoie une capture ce jour

n°1979285
MaisTuPico​lesEnPlus
une bière?
Posté le 31-03-2010 à 07:59:30  profilanswer
 

"Précision je suis sur XP"  
 
En fait je me demandais aussi s'il y avait moyen avec un logiciel (je ne m'y connait pas de trop) de modifier les valeurs en rouge en faisant simplement un copier/coller dans un autre fichier texte exemple je change les valeurs en colant mes codes :

41502503
41506804
41658446

 
 
ils se retrouvent après dans la macro (voir 1er post) il me suffit après de placer la macro dans le dossier du logiciel en question pour que la macro s'exécute avec mes nouveaux codes.
 
voila  :sweat:


Message édité par MaisTuPicolesEnPlus le 31-03-2010 à 08:00:15
n°1979425
MaisTuPico​lesEnPlus
une bière?
Posté le 31-03-2010 à 12:37:41  profilanswer
 

c'est du  langage VBScript.

n°1979434
Profil sup​primé
Posté le 31-03-2010 à 12:56:35  answer
 

MaisTuPicolesEnPlus a écrit :

c'est du  langage VBScript.


 
Salut, ces valeur en rouge, qu'on t-elle de particulier ? Comment vas tu les différencier des autres lignes ?

n°1979618
MaisTuPico​lesEnPlus
une bière?
Posté le 31-03-2010 à 17:14:06  profilanswer
 


 
en fait c'est pour m'éviter une opération répétitive seulement les valeur en rouge change tout le temps donc impossible de faire une simple macro ,
donc l'idée ce serait de faire une base de donnée avec ces valeurs en rouge , je n'aurais plus qu'a renseigné les valeurs en rouge dans un fichier texte par exemple et le reste
se ferait automatiquement.
 
Enfin je ne sais pas ci cela est possible  :sweat:

n°1979627
Profil sup​primé
Posté le 31-03-2010 à 17:29:51  answer
 

MaisTuPicolesEnPlus a écrit :


 
en fait c'est pour m'éviter une opération répétitive seulement les valeur en rouge change tout le temps donc impossible de faire une simple macro ,
donc l'idée ce serait de faire une base de donnée avec ces valeurs en rouge , je n'aurais plus qu'a renseigné les valeurs en rouge dans un fichier texte par exemple et le reste
se ferait automatiquement.
 
Enfin je ne sais pas ci cela est possible  :sweat:


 
Oui, tu n'a pas réellement besoin d'une base de donnée ou de système de gestion de base de données pour être exacte.
Un petit programme très simple peut être une solution.
Quel est ton langage de prédilection ?

n°1979633
MaisTuPico​lesEnPlus
une bière?
Posté le 31-03-2010 à 17:47:00  profilanswer
 


 
bien heu , le langage peu importe les macro sont de simple fichier texte moi c'est comme tu veux  :)
 
quel genre de logiciel pourrais faire cela ?


Message édité par MaisTuPicolesEnPlus le 31-03-2010 à 17:47:34
n°1979637
Profil sup​primé
Posté le 31-03-2010 à 17:54:44  answer
 

Trouve et installe un compilateur Ada, je vais te faire le programme qui va bien.
Pour demain, ça te va ?

mood
Publicité
Posté le 31-03-2010 à 17:54:44  profilanswer
 

n°1979639
MaisTuPico​lesEnPlus
une bière?
Posté le 31-03-2010 à 18:05:10  profilanswer
 


 
super c'est sympa j'installe gnat à l'instant :)

n°1979641
Profil sup​primé
Posté le 31-03-2010 à 18:21:34  answer
 

Donc, mon  programme prend 4 noms de fichier en paramètre de ligne de commande.
 
Exemple de commande : "Mon_Programme Nom_du_Fichier_Source Nom_du_Ficher_de_Données_à_Modifier Nom_du_Fichier_Cible Nom_de_Fichier_des_Nouvelles_Données".
Où  :

  • Nom_du_Fichier_Source est le nom du fichier à modifier ;
  • Nom_du_Ficher_de_Données_à_Modifier est le nom du fichier contenant les valeurs à modifier ;
  • Nom_du_Fichier_Cible est le nom du nouveau fichier après remplacement des données à modifier ;
  • Nom_de_Fichier_des_Nouvelles_Données est le nom du fichier contenant les données de remplacement.


Ce qui te fait 3 fichier à fournir. Pour un fichier résultant de l'application de mon programme.
Les fichiers contenants chaque valeur à modifier et en remplacement doivent se trouver sur des lignes dans chaque fichier respectifs distinctes.

n°1979666
MaisTuPico​lesEnPlus
une bière?
Posté le 31-03-2010 à 20:20:16  profilanswer
 


 
 
bien heu pour le fichier à modifier le voici en .txt  

Spoiler :


"VALEUR A MODIFIER
[tab field]
[tab field]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
"VALEUR A MODIFIER
[newline]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
"VALEUR A MODIFIER
[newline]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]


 
 
Le fichier avec valeurs (exemple) (sera nommé itm8) Ficher_de_Données_à_Modifier
 

Spoiler :

41512502
41511506
41503502


 
est-il possible de rajouter des valeurs à modifier comme je le souhaite ?
encore merci

n°1979672
Profil sup​primé
Posté le 31-03-2010 à 20:33:13  answer
 

MaisTuPicolesEnPlus a écrit :


 
 
bien heu pour le fichier à modifier le voici en .txt  

Spoiler :


"VALEUR A MODIFIER
[tab field]
[tab field]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
"VALEUR A MODIFIER
[newline]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
"VALEUR A MODIFIER
[newline]
"p56
[right]
"9999
[pf6]
[wait inp inh]
wait 1 msec
[pf6]
[wait inp inh]
wait 1 msec
[pf6]


 


Tu veux dire que toute les valeur à modifier son une unique valeur qui est "VALEUR A MODIFIER" ?
Si tu veux.

MaisTuPicolesEnPlus a écrit :


Le fichier avec valeurs (exemple) (sera nommé itm8) Ficher_de_Données_à_Modifier
 

Spoiler :

41512502
41511506
41503502




Non, c'est le fichier des valeur de remplacement ou celui des valeur à modifier. Le Ficher_de_Données_à_Modifier c'est celui d'origine.

MaisTuPicolesEnPlus a écrit :


est-il possible de rajouter des valeurs à modifier comme je le souhaite ?
encore merci


Tu peux mettre toute les valeurs à modifier que tu souhaites en donnant les valeurs de remplacement correspondantes.
 
Donc, tu a un fichier d'origine, appelons le "Origine" il sera remplacer la un fichier dont tu donnera le nom au programme.
Tu doit fournir en plus un fichier de données à modifier et un fichier de données de remplacement.
A moins que tu n'ai qu'une valeurs à modifier comme tu semblait le dire plus haut avec "VALEUR A MODIFIER", auquel cas tu ne doit fournir qu'un fichier de données de remplacement, mais dont la liste doit être ordonnée.

n°1979700
Profil sup​primé
Posté le 31-03-2010 à 23:25:57  answer
 

Code :
  1. --  replace_value - Is an text utility.
  2. --  Copyright (C) 2010  Numeric Prescience.
  3.  
  4. --  This program is free software: you can redistribute it and/or modify
  5. --  it under the terms of the GNU General Public License as published by
  6. --  the Free Software Foundation, either version 3 of the License, or
  7. --  (at your option) any later version.
  8.  
  9. --  This program is distributed in the hope that it will be useful,
  10. --  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. --  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. --  GNU General Public License for more details.
  13.  
  14. --  You should have received a copy of the GNU General Public License
  15. --  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  16.  
  17.  
  18.  
  19. with Ada.Strings.Unbounded, Ada.Text_Io, Ada.Command_Line;
  20. use Ada.Strings.Unbounded, Ada.Text_Io, Ada.Command_Line;
  21.  
  22. procedure Replace_Value is
  23.   Source, Old_Data, New_Data, Cible, Temp : File_Type;
  24.   Source_Filename, Old_Data_Filename, New_Data_Filename, Cible_Filename, Temp_Filename : Unbounded_String;
  25.   Source_Line, Old_Line, New_Line : String(1..80) := (others => Character'Val(32));
  26.   Source_Line_Last, Old_Line_Last, New_Line_Last : Natural := 0;
  27.   Done : Boolean := True;
  28. begin
  29.   if Argument_Count /= 4 then
  30.      Put_Line("Erreur de commande" );
  31.   else
  32.      Source_Filename := To_Unbounded_String(Argument(1));
  33.      Old_data_Filename := To_Unbounded_String(Argument(2));
  34.      Cible_Filename := To_Unbounded_String(Argument(3));
  35.      New_data_Filename := To_Unbounded_String(Argument(4));
  36.      Temp_Filename := To_Unbounded_String("fichier_temporaire.txt" );
  37.   end if;
  38.   begin
  39.      Open(Source, In_File, To_String(Source_Filename));
  40.   exception
  41.      when Name_Error =>
  42.         Put_line("le fichier source est absent" );
  43.   end;
  44.  
  45.   begin
  46.      Open(Old_Data, In_File, To_String(Old_Data_Filename));
  47.   exception
  48.      when Name_Error =>
  49.         Put_line("un fichier old est absent" );
  50.   end;
  51.   begin
  52.      Open(New_Data, In_File, To_String(New_Data_Filename));
  53.   exception
  54.      when Name_Error =>
  55.         Put_line("un fichier new est absent" );
  56.   end;
  57.  
  58.   Create(Temp, Out_File, To_String(Temp_Filename));
  59.  
  60.   while not End_Of_file(source) loop
  61.      if not End_Of_File(New_Data) then
  62.         if Done then
  63.            Get_Line(New_Data, New_Line, New_Line_Last);
  64.            Get_Line(Old_Data, Old_Line, Old_Line_Last);
  65.            Done := False;
  66.         end if;
  67.      else
  68.         Done := false;
  69.      end if;
  70.      Get_Line(Source, Source_Line, Source_Line_Last);
  71.      if Source_Line_Last /= 0 then
  72.         for I in 1..(Source_Line_Last - Old_Line_Last) + 1 loop
  73.            if Source_Line(I..I+(Old_Line_Last-1)) = Old_Line(1..Old_Line_Last) then
  74.               Put_line(Source_Line(I..I+(Old_Line_Last-1)) & " = " & Old_Line(1..Old_Line_Last));
  75.               if (I > 1) and (Source_Line_Last > I+(Old_Line_Last-1)) Then
  76.                  Put_Line(Temp, Source_Line(1..I-1) & New_Line(1..New_Line_Last) & Source_Line(I+Old_Line_Last..Source_Line_Last));
  77.               elsif (I > 1) then
  78.                  Put_Line(Temp, Source_Line(1..I-1) & New_Line(1..New_Line_Last));
  79.               elsif Source_Line_Last > I+Old_Line_Last then
  80.                  Put_Line(Temp, New_Line(1..New_Line_Last) & Source_Line(Old_Line_Last+1..Source_Line_Last));
  81.               else
  82.                  Put_Line(Temp, New_Line(1..New_Line_Last));
  83.               end if;
  84.               Done := True;
  85.               exit;
  86.            else
  87.               Put_line(Source_Line(I..I+(Old_Line_Last-1)) & " /= " & Old_Line(1..Old_Line_Last));
  88.            end if;
  89.         end loop;
  90.         if not Done then
  91.            Put_Line(Temp, Source_Line(1..Source_Line_Last));
  92.         end if;
  93.      else
  94.         Ada.Text_Io.New_Line(Temp);
  95.      end if;
  96.   end loop;
  97.   Close(Temp);
  98.     -- copy du fichier temps
  99.   Open(Temp, In_File, To_String(Temp_Filename));
  100.   Create(Cible, Out_File, To_String(Cible_Filename));
  101.   while not End_Of_File(Temp) loop
  102.      Get_Line(Temp, Source_Line, Source_Line_Last);
  103.      if Source_Line_Last /= 0 then
  104.         Put_Line(Cible, Source_Line(1..Source_Line_Last));
  105.      else
  106.         Ada.Text_Io.New_Line(Cible);
  107.      end if;
  108.   end loop;
  109.   Close(Cible);
  110.   Close(Temp);
  111.   Close(Source);
  112.   Close(Old_Data);
  113.   Close(New_Data);
  114.  
  115. end Replace_Value;


 
edit := Pour copier et coller le texte, double cliquer sur le code pour faire disparaitre le numéro des ligne, puis sélectionner/copier/coller dans un éditeur.


Message édité par Profil supprimé le 01-04-2010 à 06:57:21
n°1979746
MaisTuPico​lesEnPlus
une bière?
Posté le 01-04-2010 à 07:54:08  profilanswer
 

merci déjà je regarde à l'instant


Message édité par MaisTuPicolesEnPlus le 01-04-2010 à 07:55:09
n°1979747
MaisTuPico​lesEnPlus
une bière?
Posté le 01-04-2010 à 08:05:16  profilanswer
 

Excuse moi mais j'ai un petit souci je n'arrive pas à me servir de GNAT pour inclure ton script pourrais-tu m'aider stp ?

n°1979748
Profil sup​primé
Posté le 01-04-2010 à 08:11:03  answer
 

MaisTuPicolesEnPlus a écrit :

Excuse moi mais j'ai un petit souci je n'arrive pas à me servir de GNAT pour inclure ton script pourrais-tu m'aider stp ?


 
Tu dois nommer le fichier dans lequel tu as copier le code ci-dessus "replace_value.adb".
En suite tu ouvre une "invite de commande" dans laquelle tu te déplaces dans le répertoire contenant le fichier "replace_value.adb".
Puis tu tapes la commande "gnatmake replace_value" qui doit produire un exécutable nommé "replace_value.exe".

Message cité 1 fois
Message édité par Profil supprimé le 01-04-2010 à 08:11:14
n°1979911
Profil sup​primé
Posté le 01-04-2010 à 12:17:20  answer
 

As-tu atteint ton objectif ?

Message cité 1 fois
Message édité par Profil supprimé le 01-04-2010 à 12:17:28
n°1979936
MaisTuPico​lesEnPlus
une bière?
Posté le 01-04-2010 à 13:14:56  profilanswer
 


Je regarde , mais ici je suis au travail je n'ai pas les droits admninistrateurs pour installer un logiciel je regarde dès ce soir je te remercie déjà d'avance.

n°1980918
MaisTuPico​lesEnPlus
une bière?
Posté le 05-04-2010 à 12:39:42  profilanswer
 

@jovalise , désolé mais je n'arrive toujours pas à faire fonctionner GNAT pourrais-tu me dire par ou je dois commencer ?

n°1980920
Profil sup​primé
Posté le 05-04-2010 à 12:47:42  answer
 


MaisTuPicolesEnPlus a écrit :

@jovalise , désolé mais je n'arrive toujours pas à faire fonctionner GNAT pourrais-tu me dire par ou je dois commencer ?


 
 
C'était écrit au dessus.
 
 
 
 
Quel est le problème ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Editer automatiquement les valeurs d'un fichier texte

 

Sujets relatifs
html : créer un lien de téléchargement d'un fichier pdf [résolu]Ouverture et enregistrement d'un fichier xls
Tri alphabétique d'un fichier après fusion[C] Récuperer le nom d'un fichier zip
[PHP] foreach qui ignore des valeurs d'un tableauremplacement dans un fichier de config en VBS ou Batch DOS
DNS 323 et fichier HTMLOuvrir un fichier dans une fenetre Windows
[Javascript] Un menu déroulant qui rempli un champ textePerl - Fichier Texte Sed
Plus de sujets relatifs à : Editer automatiquement les valeurs d'un fichier texte


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