[..] Demande de création d'un traitement sur du texte
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
[..] Demande de création d'un traitement sur du texte
bonjour j'ai été utilisateur de la v2 je suis perdu en v3
voici mon probleme assez urgent c'est un programme d'usinage sur machine commande numérique en 5 axes
ce programme usine une pale de réacteur et avec la modif je peut faire une répétition
j'ai un fichier tmp.txt contenant ceci
(DESSUS_T2 5X Ebauche Niveau 1_2)
N37 G0C-79.519B-65.
G151S1
N38 G0X453.129Y69.137 M3
N39 G0Z177.107 M8
N42 G0X453.129Y69.137
N43 G0Z177.107
N44 G1X453.98Y64.535Z175.349 FL18
N45 X453.744Y64.742Z174.496 FL19
N46 X453.508Y64.949Z173.643
N74 X449.076Y69.072Z156.821
N75 X448.446Y68.936Z156.698
N76 X447.979Y68.814Z156.599
N77 X447.506Y68.732Z156.516C-79.474B-65.
N78 X446.881Y68.596Z156.395C-79.414B-65.
N79 X446.102Y68.426Z156.246C-79.338B-65.
je voudrais ceci dans tmp.new par exemple
(DESSUS_T2 5X Ebauche Niveau 1_2)
L101=-79.519+L100
N37 G0CL101B-65.
G151S1
N38 G0X453.129Y69.137 M3
N39 G0Z177.107 M8
N42 G0X453.129Y69.137
N43 G0Z177.107
N44 G1X453.98Y64.535Z175.349 FL18
N45 X453.744Y64.742Z174.496 FL19
N46 X453.508Y64.949Z173.643
N74 X449.076Y69.072Z156.821
N75 X448.446Y68.936Z156.698
N76 X447.979Y68.814Z156.599
L101=-79.474+L100
N77 X447.506Y68.732Z156.516CL101B-65.
L101=-79.414+L100
N78 X446.881Y68.596Z156.395CL101B-65.
L101=-79.338+L100
N79 X446.102Y68.426Z156.246CL101B-65.
il faut chercher C prendre le numérique qui suit
ecrire sur la ligne d'avant
L101=.....+L100 ... est le numérique trouvé
ensuite reécrire la ligne en remplaçant le numérique par L101
ceci jusqu'a la fin du fichier
merci pour votre réponse
voici mon probleme assez urgent c'est un programme d'usinage sur machine commande numérique en 5 axes
ce programme usine une pale de réacteur et avec la modif je peut faire une répétition
j'ai un fichier tmp.txt contenant ceci
(DESSUS_T2 5X Ebauche Niveau 1_2)
N37 G0C-79.519B-65.
G151S1
N38 G0X453.129Y69.137 M3
N39 G0Z177.107 M8
N42 G0X453.129Y69.137
N43 G0Z177.107
N44 G1X453.98Y64.535Z175.349 FL18
N45 X453.744Y64.742Z174.496 FL19
N46 X453.508Y64.949Z173.643
N74 X449.076Y69.072Z156.821
N75 X448.446Y68.936Z156.698
N76 X447.979Y68.814Z156.599
N77 X447.506Y68.732Z156.516C-79.474B-65.
N78 X446.881Y68.596Z156.395C-79.414B-65.
N79 X446.102Y68.426Z156.246C-79.338B-65.
je voudrais ceci dans tmp.new par exemple
(DESSUS_T2 5X Ebauche Niveau 1_2)
L101=-79.519+L100
N37 G0CL101B-65.
G151S1
N38 G0X453.129Y69.137 M3
N39 G0Z177.107 M8
N42 G0X453.129Y69.137
N43 G0Z177.107
N44 G1X453.98Y64.535Z175.349 FL18
N45 X453.744Y64.742Z174.496 FL19
N46 X453.508Y64.949Z173.643
N74 X449.076Y69.072Z156.821
N75 X448.446Y68.936Z156.698
N76 X447.979Y68.814Z156.599
L101=-79.474+L100
N77 X447.506Y68.732Z156.516CL101B-65.
L101=-79.414+L100
N78 X446.881Y68.596Z156.395CL101B-65.
L101=-79.338+L100
N79 X446.102Y68.426Z156.246CL101B-65.
il faut chercher C prendre le numérique qui suit
ecrire sur la ligne d'avant
L101=.....+L100 ... est le numérique trouvé
ensuite reécrire la ligne en remplaçant le numérique par L101
ceci jusqu'a la fin du fichier
merci pour votre réponse
- ayuckers
- Niveau 4

- Messages : 77
- Enregistré le : mer. 28 oct. 2009 14:15
- Localisation : Drome
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
Bonsoir, michel2295
Voici votre script, il vous suffiera de modifier les 2 chemin d'acces au debut du script.
j'espere ne pas avoir fait trop compliqué
dite mois si cela vous convient
edit : Oups Sorry voila c'est fait
Voici votre script, il vous suffiera de modifier les 2 chemin d'acces au debut du script.
j'espere ne pas avoir fait trop compliqué
dite mois si cela vous convient
► Afficher le texte
Modifié en dernier par ayuckers le mar. 19 janv. 2010 21:47, modifié 1 fois.
Re: [..] Demande de création d'un traitement sur du texte
Merci d'editer mon message pour inserer les balises
Code : Tout sélectionner
sur la partie de votre message le necessitant.- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
@ayuckers
Aux vues de la question, je ne suis pas sure que la valeur numérique soit toujours négative, et que la première lettre qui suit soit la lettre B.
Si la ligne N°2 ressemble à ceci :votre code ne fonctionne plus.
Il faudrait donc que michel2295 confirme la structure constante du fichier, ou alors modifier le traitement pour prendre en compte les autres possibilités.
Aux vues de la question, je ne suis pas sure que la valeur numérique soit toujours négative, et que la première lettre qui suit soit la lettre B.
Si la ligne N°2 ressemble à ceci :
Code : Tout sélectionner
N37 G0C27.519A-65.Il faudrait donc que michel2295 confirme la structure constante du fichier, ou alors modifier le traitement pour prendre en compte les autres possibilités.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
Voilà comment je verrais le traitement de la ligne.
► Afficher le texte
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
bonjour et merci beaucoup
ça fonctionne nickell j'ai fait la modif car c n'est pas toujours positif
pour parfaire le prog il faudrait mettre le fichier d'entrée en variable poser la question
et pour le fichier de sortie récupérer le nom de fichier sans l'extension et mettre new automatiquement
et pour récupérer le C prendre en avançant caractere par caractere tant que l'on trouve un numérique comme ça ça fonctionne meme si il n'y a pas de B normalement on ne trouve que B ou fin de ligne et ça doit etre un numérique
encore merci
ça fonctionne nickell j'ai fait la modif car c n'est pas toujours positif
pour parfaire le prog il faudrait mettre le fichier d'entrée en variable poser la question
et pour le fichier de sortie récupérer le nom de fichier sans l'extension et mettre new automatiquement
et pour récupérer le C prendre en avançant caractere par caractere tant que l'on trouve un numérique comme ça ça fonctionne meme si il n'y a pas de B normalement on ne trouve que B ou fin de ligne et ça doit etre un numérique
encore merci
ayuckers a écrit :Bonsoir, michel2295
Voici votre script, il vous suffiera de modifier les 2 chemin d'acces au debut du script.
j'espere ne pas avoir fait trop compliqué
dite mois si cela vous convient
edit : Oups Sorry voila c'est fait► Afficher le texte
- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
bonjour vous avez raison il faut chercher C et un numérique et si il n'y a pas de numérique on écrit tel quel la ligne car C peut se trouver dans un commentaires
j'ai essayé d'intégrer ces lignes dans le prog a ayuckers qui fonctionne avec C- et B
je n'ai pas réussi la 1ligne fonctionne ensuite il ne prend plus le C
j'ai essayé d'intégrer ces lignes dans le prog a ayuckers qui fonctionne avec C- et B
je n'ai pas réussi la 1ligne fonctionne ensuite il ne prend plus le C
Tlem a écrit :Voilà comment je verrais le traitement de la ligne.
► Afficher le texte
- ayuckers
- Niveau 4

- Messages : 77
- Enregistré le : mer. 28 oct. 2009 14:15
- Localisation : Drome
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
Voila j'ai apporter les modification :
- j'ai integré la solution de Tlem qui est effectivement tres pratique
pour que cette methode fonctionne il faut gérer l'offset
Comme la fonction "StringInStr" retourne dans notre cas la position de "C" dans
la chaine de caracter, la valeur retourné par cette fonction correspond donc a notre Offset
- j'ai rajouté une boite de dialogue pour rechercher le fichier TXT
-le fichier Modifier sera donc crée avec l'extension "New" au meme endroit que le fichier Text
par contre je ne maitrise pas du tout la fonction "StringRegExp" et je n'ai pas encore réelement
compris comment Tlem a fait cela...
Mais il reste tout de meme un petit probleme.... je cherche encore mais si Tlem a une Idée pour suprimé les "-"
apres modification de la ligne
EDIT : j'ai bricoler une solution ... sa devrais fonctionner, je l'ai integré au code
voici la ligne pour supprimer le caractere "-" juste apres le "C" quand une ligne est modifier
je ne sait pas si il y a plus simple
Normalement le Script est Fonctionnel, reste plus qu'a tester
- j'ai integré la solution de Tlem qui est effectivement tres pratique
pour que cette methode fonctionne il faut gérer l'offset
Comme la fonction "StringInStr" retourne dans notre cas la position de "C" dans
la chaine de caracter, la valeur retourné par cette fonction correspond donc a notre Offset
- j'ai rajouté une boite de dialogue pour rechercher le fichier TXT
-le fichier Modifier sera donc crée avec l'extension "New" au meme endroit que le fichier Text
► Afficher le texte
compris comment Tlem a fait cela...
Mais il reste tout de meme un petit probleme.... je cherche encore mais si Tlem a une Idée pour suprimé les "-"
apres modification de la ligne
EDIT : j'ai bricoler une solution ... sa devrais fonctionner, je l'ai integré au code
voici la ligne pour supprimer le caractere "-" juste apres le "C" quand une ligne est modifier
► Afficher le texte
Normalement le Script est Fonctionnel, reste plus qu'a tester
- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
bonjour et encore merci
je viens d'essayer tres bien
il fonctionne même si on a rien ou un tout autre caractere derriere ou C positif sans le -
j'ai rajouté
; si le fichier n'existe pas il est supprimé et crée automatiquement
if FileExists ( $Dest ) then
FileDelete ( $Dest )
endif
j'ai modifié
If StringMid($Line, $Cposition + 1, 1) = '-' Then $aNb[0] = '-' & $aNb[0]
il y avait la $C j'ai mis $Cposition $C n'existe plus
$line = StringMid($line, 1, StringInStr($line, "C")) & StringMid($line,StringInStr($line, "C")+1,StringLen($line) )
et j'ai mis +1 au lieu de+2 car il me "bouffait le L"
il se plante si il y a un C et pas de valeur numérique dans un commentaire par exemple
voici un fichier pour tester
(DESSUS_T2 5axes Ebauche Niveau 4_5)
N35 G151 S1
N37 G0C-80.54B-58.963
N42 G0X448.492Y45.897
N45 X456.237Y-0.589Z129.777
N47 X456.097Y-0.711Z129.862
N48 X455.417Y-0.753Z129.547C-80.457
N49 X455.19Y-0.767Z129.442C-80.428 B-58.731
N50 X454.398Y-0.848Z129.061C-80.329 A-58.525
N51 X453.606Y-0.928Z128.681C-80.229B-58.319
N52 X452.712Y-1.012Z128.255C-80.115
N56 X450.192Y-1.233Z127.066C-79.793B-57.435
N232 X307.802Y-1.832Z96.212C68.062B-25.441
N36 ( C tout seul pour tester)
N234 X302.969Y9.939Z123.381
merci j'éssaie un de comprendre la v3 je n'avais fait que quelques prog simple en v2
encore merci car j'ai deja traité mes fichiers avec la premiere version
je viens d'essayer tres bien
il fonctionne même si on a rien ou un tout autre caractere derriere ou C positif sans le -
j'ai rajouté
; si le fichier n'existe pas il est supprimé et crée automatiquement
if FileExists ( $Dest ) then
FileDelete ( $Dest )
endif
j'ai modifié
If StringMid($Line, $Cposition + 1, 1) = '-' Then $aNb[0] = '-' & $aNb[0]
il y avait la $C j'ai mis $Cposition $C n'existe plus
$line = StringMid($line, 1, StringInStr($line, "C")) & StringMid($line,StringInStr($line, "C")+1,StringLen($line) )
et j'ai mis +1 au lieu de+2 car il me "bouffait le L"
il se plante si il y a un C et pas de valeur numérique dans un commentaire par exemple
voici un fichier pour tester
(DESSUS_T2 5axes Ebauche Niveau 4_5)
N35 G151 S1
N37 G0C-80.54B-58.963
N42 G0X448.492Y45.897
N45 X456.237Y-0.589Z129.777
N47 X456.097Y-0.711Z129.862
N48 X455.417Y-0.753Z129.547C-80.457
N49 X455.19Y-0.767Z129.442C-80.428 B-58.731
N50 X454.398Y-0.848Z129.061C-80.329 A-58.525
N51 X453.606Y-0.928Z128.681C-80.229B-58.319
N52 X452.712Y-1.012Z128.255C-80.115
N56 X450.192Y-1.233Z127.066C-79.793B-57.435
N232 X307.802Y-1.832Z96.212C68.062B-25.441
N36 ( C tout seul pour tester)
N234 X302.969Y9.939Z123.381
merci j'éssaie un de comprendre la v3 je n'avais fait que quelques prog simple en v2
encore merci car j'ai deja traité mes fichiers avec la premiere version
Re: [..] Demande de création d'un traitement sur du texte
Michel, Utilisez la balise
Code : Tout sélectionner
pour tous vos codes, et EDITEZ vos messages.
Dans le cas contraire, ce sujet sera supprimé.- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
excusez moi je n'avais pas compris balise
Code : Tout sélectionner
je pense qu'il suffit de mettre [code] et d'ecrire normalement ensuite
mais je vais essayer la prochaine fois
merci du conseil- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
Pour l'utilisation des balises, voyez ceci : http://www.autoitscript.fr/forum/viewto ... 896#p24896
Évitez aussi les citations qui sont inutiles.
Évitez aussi les citations qui sont inutiles.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
@ayuckers
La coloration syntaxique du code est réservée aux forums : Pour répondre à votre question (http://www.autoitscript.fr/forum/viewto ... 643#p27643), StringRegExp() permet de rechercher et de renvoyer une information selon 'un masque de donnée' définit. Cela fait appel aux expressions régulières (Expression rationnelle en Français
).
C'est un outil super puissant lorsqu'on le maitrise très bien, mais si comme moi vous bricolez, alors ce n'est pas toujours évident de trouver le bon Pattern.
Pour en revenir au code de michel2295, je verrais bien une autre solution pour trouver la chaine et faire le traitement sans risque d'erreur.
A première vue d'après les éléments donnés, la chaine à traiter serait de la forme :J'ai remplacé les lettres qui ne sont pas un point de référence par la lettre générique X et les nombres par le 0.
Donc, fort de cela, on peut donc considérer que si dans la chaine je trouve :alors j'ai bien la chaine à traiter.
Nous allons donc utiliser encore une fois les expressions régulières pour tester la chaine.
Si je ne dit pas de connerie, en référence à l'aide de la fonction StringRegExp() alors nous auront :
Un caractère non numérique (\D) + un caractère numérique (\d) + la lettre C + le signe négatif (mais pas tout le temps) + 2 ou 3 caractères numériques (\d{2,3}) + un point + 2 ou 3 caractères numériques (\d{2,3}).
Ce qui nous amène (à cause du signe négatif) à deux Pattern possibles :
Il suffit donc d'utiliser la validation par expression régulière au lieu de chercher la lettre C dans la ligne.
En adaptant le code que j'avais donné précédemment, cela donne :Ce code, permet donc de valider et de traiter tout les cas de ce type :
La coloration syntaxique du code est réservée aux forums : Pour répondre à votre question (http://www.autoitscript.fr/forum/viewto ... 643#p27643), StringRegExp() permet de rechercher et de renvoyer une information selon 'un masque de donnée' définit. Cela fait appel aux expressions régulières (Expression rationnelle en Français
C'est un outil super puissant lorsqu'on le maitrise très bien, mais si comme moi vous bricolez, alors ce n'est pas toujours évident de trouver le bon Pattern.
Pour en revenir au code de michel2295, je verrais bien une autre solution pour trouver la chaine et faire le traitement sans risque d'erreur.
A première vue d'après les éléments donnés, la chaine à traiter serait de la forme :
Code : Tout sélectionner
X00 X0C-00.000X-00.000
Ou sans le signe négatif
X00 X0C00.000X00.000Donc, fort de cela, on peut donc considérer que si dans la chaine je trouve :
Code : Tout sélectionner
X0C-00.000
ou
X0C00.000Nous allons donc utiliser encore une fois les expressions régulières pour tester la chaine.
Si je ne dit pas de connerie, en référence à l'aide de la fonction StringRegExp() alors nous auront :
Un caractère non numérique (\D) + un caractère numérique (\d) + la lettre C + le signe négatif (mais pas tout le temps) + 2 ou 3 caractères numériques (\d{2,3}) + un point + 2 ou 3 caractères numériques (\d{2,3}).
Ce qui nous amène (à cause du signe négatif) à deux Pattern possibles :
Code : Tout sélectionner
(\D\dC-\d{1,3}.\d{1,3})
Ou
(\D\dC\d{1,3}.\d{1,3})En adaptant le code que j'avais donné précédemment, cela donne :
Code : Tout sélectionner
$Line = 'N37 G0C-27.519B-65.'
If (StringRegExp($Line, '(\D\dC-\d{2,3}.\d{2,3})', 0) Or StringRegExp($Line, '(\D\dC\d{2,3}.\d{2,3})', 0)) Then
$C = StringInStr($Line, 'C')
$aNb = StringRegExp($Line, '(\d{2,3}.\d{2,3})', 1)
MsgBox(0, '', $aNb[0])
If StringMid($Line, $C + 1, 1) = '-' Then $aNb[0] = '-' & $aNb[0]
$Line = 'L101=' & $aNb[0] & '+L100' & @CRLF & _
StringReplace($Line, $aNb[0], 'L101')
EndIf
MsgBox(0, '', $line)Code : Tout sélectionner
N37 G0C-27.519B-65.
N37 G0C27.519B-65.
N37 G0C-270.51B-65.
N37 G0C270.51B-65.
N37 H1C-27.519C-65.00
N37 H1C27.519C-65.00Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
bonsoir et merci Tlem
je pense que StringRegExp ne convient pas
il faut chercher C et faire une boucle avancer d'un caractere et tester si +-.0123456789
voici ce que l'on doit traiter merci d'avance
je pense que StringRegExp ne convient pas
il faut chercher C et faire une boucle avancer d'un caractere et tester si +-.0123456789
voici ce que l'on doit traiter merci d'avance
Code : Tout sélectionner
N56 C1
N 5 C1.1B6
N56 C-1
N 5 C-1.1B6
N56 C0.333A66
N 5 C1.1B6
N56 C-1
N 5 C-1.1B6
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
Effectivement, vous introduisez des valeurs qui ne rentre pas dans le cadre de cette recherche :
Toutefois, l'expression régulière me semble quand même la meilleur solution dans votre cas puisque vous donnez un panel de valeurs très différentes et à moins de tester caractère par caractère, je ne vois pas comment faire autrement.
Voici donc une nouvelle version du 'testeur de ligne'
qui passe toutes les valeurs que vous avez indiqué (sauf l'exemple du début puisque les nouvelles valeurs sont différentes par l'espace avant le C
).
La base de la recherche est restreinte, mais correspond à un numérique + un espace + la lettre C + éventuellement le signe - + un numérique.
Ce qui limite quand même la recherche aux lignes de recherche et non aux lignes de commentaires.
Code : Tout sélectionner
N56 C1
et
N56 C-1Voici donc une nouvelle version du 'testeur de ligne'
La base de la recherche est restreinte, mais correspond à un numérique + un espace + la lettre C + éventuellement le signe - + un numérique.
Ce qui limite quand même la recherche aux lignes de recherche et non aux lignes de commentaires.
► Afficher le texte
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
ça fonctionne super bien avec un blanc devant C pour parfaire et eviter ce cas il faudrait une fonction directe pour mettre un blanc devant C avant de passer au traitement
voici le code complet [blink]#include <file.au3>
#include <String.au3>
#include <Array.au3>
; declaration des variable
; ouverture d'une boite de dialogue pour recherche le fichier text
Global $Source = FileOpenDialog("Machine", @WindowsDir & "\", "Text (*.*)", 1 )
Global $Dest
Global $Cpt, $Cvar, $NumVar, $C, $Cposition
Global $DecomposeChemin, $DecomposeNom
; calcule le nombre de ligne contenu dans le fichier
Global $CountLines = _FileCountLines($Source)
; decomposition du chemin d'acces puis du nom
$DecomposeChemin = StringSplit($Source, '\', 1)
$DecomposeNom = StringSplit($DecomposeChemin[$DecomposeChemin[0]], '.', 1)
$DecomposeNom[2] = "new" ; ici choix de l'extention
;recomposition du chemin d'acces avec la nouvelle extention
$DecomposeChemin[$DecomposeChemin[0]] = _ArrayToString($DecomposeNom,".",1)
$Dest = _ArrayToString($DecomposeChemin,"\",1)
; ouverture des fichier 0 = lecture, 1 = ecriture
$FileSource = FileOpen($Source, 0)
; si le fichier n'existe pas il est supprimé et crée automatiquement
if FileExists ( $Dest ) then
FileDelete ( $Dest )
endif
$FileNew = FileOpen($Dest, 1)
; verrification de securité
If ($FileSource = -1) OR ($FileNew = -1) Then
MsgBox(0, "Erreur", "Probleme ouverture fichier")
Exit ; si erreur le script est arreter fin du programme
EndIf
; ecriture de la 1er ligne dans le Nouveau fichier
$line = FileReadLine($Source,1)
FileWriteLine($FileNew, $line)
; ici j'ai mis 2 pour commencer a la 2eme ligne du fichier
For $Cpt = 2 To $CountLines
$line = FileReadLine($Source,$Cpt)
If @error = -1 Then ExitLoop
$Cposition = StringInStr($line, "C")
; si il n'y a pas de C dans la ligne on la copie tel quel
If $Cposition = 0 Then
FileWriteLine($FileNew, $line) ; ecriture de la ligne dans le fichier
; si il y a un C dans la ligne alors un fait quelque modif
ElseIf $Cposition > 0 Then
;*************************
If (StringRegExp($Line, '(\d C-\d{1,3})', 0) Or StringRegExp($Line, '(\d C\d{1,3})', 0)) Then
Local $Res
$aNb = StringSplit($Line, " C", 1)
$Res = $aNb[2]
If StringRegExp($Res, '([a-zA-Z])', 0) Then
$aNb = StringRegExp($Res, '([a-zA-Z])', 1)
$aNb = StringSplit($Res, $aNb[0], 1)
$Res = $aNb[1]
EndIf
$Line = 'L101=' & $Res & '+L100' & @CRLF & _
StringReplace($Line, $Res, 'L101')
EndIf
;MsgBox(0, 'End', $line)
FileWriteLine($FileNew,$Line)
EndIf
Next
MsgBox(0,"Convert", "Fini")
; fermeture des fichier ouvert
FileClose($FileSource)
FileClose($FileNew)[/blink]
voici le code complet [blink]#include <file.au3>
#include <String.au3>
#include <Array.au3>
; declaration des variable
; ouverture d'une boite de dialogue pour recherche le fichier text
Global $Source = FileOpenDialog("Machine", @WindowsDir & "\", "Text (*.*)", 1 )
Global $Dest
Global $Cpt, $Cvar, $NumVar, $C, $Cposition
Global $DecomposeChemin, $DecomposeNom
; calcule le nombre de ligne contenu dans le fichier
Global $CountLines = _FileCountLines($Source)
; decomposition du chemin d'acces puis du nom
$DecomposeChemin = StringSplit($Source, '\', 1)
$DecomposeNom = StringSplit($DecomposeChemin[$DecomposeChemin[0]], '.', 1)
$DecomposeNom[2] = "new" ; ici choix de l'extention
;recomposition du chemin d'acces avec la nouvelle extention
$DecomposeChemin[$DecomposeChemin[0]] = _ArrayToString($DecomposeNom,".",1)
$Dest = _ArrayToString($DecomposeChemin,"\",1)
; ouverture des fichier 0 = lecture, 1 = ecriture
$FileSource = FileOpen($Source, 0)
; si le fichier n'existe pas il est supprimé et crée automatiquement
if FileExists ( $Dest ) then
FileDelete ( $Dest )
endif
$FileNew = FileOpen($Dest, 1)
; verrification de securité
If ($FileSource = -1) OR ($FileNew = -1) Then
MsgBox(0, "Erreur", "Probleme ouverture fichier")
Exit ; si erreur le script est arreter fin du programme
EndIf
; ecriture de la 1er ligne dans le Nouveau fichier
$line = FileReadLine($Source,1)
FileWriteLine($FileNew, $line)
; ici j'ai mis 2 pour commencer a la 2eme ligne du fichier
For $Cpt = 2 To $CountLines
$line = FileReadLine($Source,$Cpt)
If @error = -1 Then ExitLoop
$Cposition = StringInStr($line, "C")
; si il n'y a pas de C dans la ligne on la copie tel quel
If $Cposition = 0 Then
FileWriteLine($FileNew, $line) ; ecriture de la ligne dans le fichier
; si il y a un C dans la ligne alors un fait quelque modif
ElseIf $Cposition > 0 Then
;*************************
If (StringRegExp($Line, '(\d C-\d{1,3})', 0) Or StringRegExp($Line, '(\d C\d{1,3})', 0)) Then
Local $Res
$aNb = StringSplit($Line, " C", 1)
$Res = $aNb[2]
If StringRegExp($Res, '([a-zA-Z])', 0) Then
$aNb = StringRegExp($Res, '([a-zA-Z])', 1)
$aNb = StringSplit($Res, $aNb[0], 1)
$Res = $aNb[1]
EndIf
$Line = 'L101=' & $Res & '+L100' & @CRLF & _
StringReplace($Line, $Res, 'L101')
EndIf
;MsgBox(0, 'End', $line)
FileWriteLine($FileNew,$Line)
EndIf
Next
MsgBox(0,"Convert", "Fini")
; fermeture des fichier ouvert
FileClose($FileSource)
FileClose($FileNew)[/blink]
- michel2295
- Niveau 1

- Messages : 9
- Enregistré le : mer. 06 janv. 2010 16:32
- Localisation : val d'oise bretagne
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
j'ai mis '[blink][/blink]' pour cacher le code mais ce n'était pas ça
que faut t'il mettre pour mettre 'voir' et donc cacher le code
que faut t'il mettre pour mettre 'voir' et donc cacher le code
-
pierrotm777
- Membre émérite

- Messages : 770
- Enregistré le : sam. 11 oct. 2008 14:44
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
Sélection votre code et cliquez sur 'spoiler=" 
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Demande de création d'un traitement sur du texte
J'ai décrit comment utiliser les outils du forum sur ce lien : http://www.autoitscript.fr/forum/viewto ... 896#p24896
Pensez à rajouter les balises de code.
Pensez à rajouter les balises de code.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

