[R] Je cherche à ajouter un mot dans les lignes d'un .txt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Je cherche à ajouter un mot dans les lignes d'un .txt

#1

Message par Boulanza »

Bonjour tout le monde,
Je cherche à ajouter un mot dans les lignes d'un .txt
- Inserer « $text = " » à gauche de la première ligne d’un fichier text.txt et « " & @CRLF » à droite de tous les lignes du fichier text.txt.
- Inserer «$text &= "» à gauche de la deuxième ligne et ligne suivantes d’un fichier text.txt
Voir l'exemple ci-dessous:
Merci un infiniment pour votre aide.
Cordialement.

Code : Tout sélectionner

$text = " En cas de litige et à défaut d'accord amiable entre les parties, le présent contrat est régi, interprété et appliqué conformément au Droit Marocain. Tout litige relatif ou découlant de l'exécution du présent contrat est soumis aux tribunaux compétents dans le ressort du siège de la société. " & @CRLF & @CRLF
$text &= " En cas de litige et à défaut d'accord amiable entre les parties, le présent contrat est régi, interprété et appliqué conformément au Droit Marocain. Tout litige relatif ou découlant de l'exécution du présent contrat est soumis aux tribunaux compétents dans le ressort du siège de la société. " & @CRLF & @CRLF
Modifié en dernier par Boulanza le mar. 01 sept. 2020 11:52, modifié 3 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à automatiser l’insérer d’un mot dans les lignes d'un .txt

#2

Message par jchd »

Comme ça ?

Code : Tout sélectionner

Local $s = "blah blah 1" & @CRLF & "blah blah 2" & @CRLF & "more legalese blah 3" & @CRLF & "final blah blah"  & @CRLF

Local $t = "Local $text" & @CRLF & StringRegExpReplace($s, '(.*)(\R|$)', '$text &= "$1" & @CRLF' & @CRLF)
ConsoleWrite($t & @LF)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#3

Message par Boulanza »

Merci cher jchd pour votre réponse.
Résultat:
est.txt
$text &= "blah blah 1" & @CRLF
$text &= "blah blah 2" & @CRLF
$text &= "more legalese blah 3" & @CRLF
$text &= "final blah blah" & @CRLF
$text &= "" & @CRLF

-" blah blah 1 à n" = text de la première ligne à n ligne est inconnu. A remplacer par : A-z a-z 0-9 .,;:!?**/_- etc

j'ai trouvé ce code qui localise les lignes du .txt mais en-vain:

Code : Tout sélectionner

#include <Array.au3>
$text = WinGetText("est.txt", "")
MsgBox(0, "Text read was:", $text)
$array = StringSplit($text,@CRLF)
_ArrayDisplay($array)
$array2 = StringSplit($array[1],' ')
For $i = 1 to $array[0]
$array2 = StringSplit($array[$i],' ')
  MsgBox(0,'Texte trouvé',$array2[$i])
Next
Cordialement.
Modifié en dernier par Boulanza le lun. 31 août 2020 14:50, modifié 1 fois.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#4

Message par Boulanza »

Pour une bonne compréhension de ma demande, j'ai trouvé le code ci-dessous qui représente exactement le résultat que je cherche:

Code : Tout sélectionner

#Include <Array.au3>

$txt = "AutoIt has been designed to be as small as possible and stand-alone with no external .dll files " & @crlf & _
"or registry entries required making it safe to use on Servers."  & @crlf & _
"Scripts can be compiled into stand-alone executables with Aut2Exe." & @crlf & _
@crlf & _
"Also supplied is a AB000DD4 combined COM and DLL version of AutoIt called AutoItX." & @crlf & _
"that allows you to add the unique features of AutoIt" & @crlf & _
"to your own favorite scripting or programming languages!" & @crlf & _
 @crlf & _
"Best of all, AutoIt continues to be free - but if you want to support the time, " & @crlf & _
"money and effort spent on the project and web hosting then you may donate at the AutoIt homepage." & @crlf

Msgbox(0,"", $txt)   ; initial text

$res = StringRegExpReplace($txt, '(?s).*\R{2}(.*?AB000DD4.*?)\R{2}.*', "$1")  ; isolate the part
$lines = StringRegExp($res, '(?m)^(\N*)\R?', 3)   ; read the part to array
_ArrayDisplay($lines)

Problématique:
Si le texte initiale est de cet forme :
AutoIt has been designed to be as small as possible and stand-alone with no external .dll files
or registry entries required making it safe to use on Servers.
Scripts can be compiled into stand-alone executables with Aut2Exe.

Also supplied is a AB000DD4 combined COM and DLL version of AutoIt called AutoItX.
that allows you to add the unique features of AutoIt
to your own favorite scripting or programming languages!

Best of all, AutoIt continues to be free - but if you want to support the time,
money and effort spent on the project and web hosting then you may donate at the AutoIt homepage.

Donc: Je cherche exactement un scripte qui donne le résultat du code ci-dessus.
Merci pour votre compréhension...
Cordialement.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#5

Message par Boulanza »

J'ai pu obtenir avec le code suivant 50% comme solution à mon problème.
Code:

Code : Tout sélectionner

#Include <File.au3>
Dim $StrArray
_FileReadToArray("est.txt", $StrArray)
For $i = 1 To $StrArray[0]
    $StrArray[$i] &= ' " & @crlf & _'
Next
_FileWriteFromArray("result.txt",  $StrArray, 1)
Résultat:

Code : Tout sélectionner

Si le texte initiale est de cet forme :" & @crlf & _
AutoIt has been designed to be as small as possible and stand-alone with no external .dll files" & @crlf & _
or registry entries required making it safe to use on Servers." & @crlf & _
Scripts can be compiled into stand-alone executables with Aut2Exe." & @crlf & _
" & @crlf & _
Also supplied is a AB000DD4 combined COM and DLL version of AutoIt called AutoItX." & @crlf & _
that allows you to add the unique features of AutoIt" & @crlf & _
to your own favorite scripting or programming languages!" & @crlf & _
" & @crlf & _
Best of all, AutoIt continues to be free - but if you want to support the time," & @crlf & _
money and effort spent on the project and web hosting then you may donate at the AutoIt homepage." & @crlf & _

Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#6

Message par jchd »

Je ne vois toujours pas pourquoi mon exemple ne convient pas, mais bon...
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#7

Message par Boulanza »

Bonjour Monsieur jchd,
Votre exemple du code ci-dessous, est ingénieux. Mon problème et que je reçois des document notamment des fichiers texte de plus de 100 pages. Ce qui reviens à dire que "blah blah 1" & @CRLF & "blah blah 2" & @CRLF &... sont inconnu (pages). D'un autre coté les options par exemple : $s, '(.*)(\R|$)' et autres qui permettent à traiter mon cas sont absent (formation) sur les sites AutoIt, ce qui me pousse à patauger afin d'arriver à une solution hasardeuse... Voir exemple suivant:

Code : Tout sélectionner

#Include <File.au3>
#include <File.au3>
; Pour supprimer & de la dernère ligne du fichier texte = parfait por notre cas
$FILE = "resultat1.txt"
_ReplaceStringInFile($FILE, "& @crlf_", " @crlf  _", 0,2)
Cordialement.
Code jchd:

Code : Tout sélectionner

Local $s = "blah blah 1" & @CRLF & "blah blah 2" & @CRLF & "more legalese blah 3" & @CRLF & "final blah blah"  & @CRLF
Local $t = "Local $text" & @CRLF & StringRegExpReplace($s, '(.*)(\R|$)', '$text &= "$1" & @CRLF' & @CRLF)
ConsoleWrite($t & @LF)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#8

Message par Boulanza »

Suite pour Monsieur jchd,
En ajustant votre script avec le code suivant je crois qu'en aura quelque chose qui ressoudera ce problème.

Code : Tout sélectionner

test1()
Func test1()
Dim $StrArray1
_FileReadToArray("est.txt", $StrArray1)

For $i = 1 To $StrArray1[0]
    $StrArray1[$i] &= '" & @crlf & _'
Next
_FileWriteFromArray("resultat1.txt",  $StrArray1, 1)
EndFunc
Modifié en dernier par Boulanza le mar. 01 sept. 2020 11:16, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#9

Message par jchd »

C'est une émasculation, pas une adaptation !

Code : Tout sélectionner

test1()

Func test1()
	Local $s = FileRead("est.txt")
	; if @error ...
	Local $t = "Local $text" & @CRLF & StringRegExpReplace($s, '(.*)(\R|$)', '$text &= "$1" & @CRLF' & @CRLF)
	FileDelete("resultat1.txt")
	FileWrite("resultat1.txt", $t)
	; if @error ...
EndFunc   ;==>test1
D'un autre coté les options par exemple : $s, '(.*)(\R|$)' et autres qui permettent à traiter mon cas sont absent (formation) sur les sites AutoIt
Qu'est-ce qui est absent chez vous ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#10

Message par Boulanza »

Bonjour,
Bravo, le script est parfait, rien à dire.
Javais aucun doute en parcourant les forum autoit Fr/An/Es... j'ai vite compris que vous êtes un chevronné dans le domaine de développement des script Autoit, j'avoue aussi que l'équipe de Autoit est virtuose dans son domaine d'aide et de conseil...
Je vous transmets tous mes respects, ainsi qu'à tous les membres de AutoIt.
Cordialement.
Modifié en dernier par Boulanza le mar. 01 sept. 2020 11:52, modifié 1 fois.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#11

Message par Boulanza »

Que signifie ces instructions par exemple: '(.*)(\R|$)', '$text &= "$1" & @CRLF' & @CRLF'
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Je cherche à ajouter un mot dans les lignes d'un .txt

#12

Message par mikell »

Boulanza a écrit : mar. 01 sept. 2020 11:49Bravo, le script est parfait, rien à dire.
Il l'était déjà dans le post #2, vu que c'est le même :mrgreen:

Votre problème récurrent, c'est que ce que vous voulez n'est pas une aide susceptible de vous mettre sur la bonne voie. Vous n'êtes satisfait que si on vous fournit le script complet prêt à l'emploi...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Je cherche à ajouter un mot dans les lignes d'un .txt

#13

Message par Boulanza »

Désolé mikell, ce n'est pas vais, j'ai cherché d'autres possibilités mais en vain: voir mes réponses ci-dessus. Je ne maîtrise pas les instructions comme par exemple: '(.*)(\R|$)', '$text &= "$1" & @CRLF' & @CRLF' etc. En plus j'ai un principe de respecter les travaux (oeuvres) réalisés par les membres de AutoIt, je croie que vous l'avez déjà remarqué dans mes demandes. Lorsque je peux solutionner un problème, avec vos suggestions, je le fait et je le partage sans hésitation.
Cordialement.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Je cherche à ajouter un mot dans les lignes d'un .txt

#14

Message par Boulanza »

Bonjour tout le monde,
J'ai un petit souci concernant le nombre de lignes lors de l’exécution de scripte.
Le contrat objet dudit test comprend plus de 1.000 ligne or après exécution il y a que 123 lignes qui apparaissent.
C'est à dire : $FrOrigine001 = GUICreate("Nos Conditions :", 1170, 880, -1, -1) est limité à 123 lignes.
Je n'ai pas d'idée préconçue quant à la réponse à apporter à cette question. votre aide est grandement appréciée.
Cordialement.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Je cherche à ajouter un mot dans les lignes d'un .txt

#15

Message par Boulanza »

Suite à la précédente demande : #14 Message par Boulanza » ven. 04 sept. 2020 11:10
J'ai trouvé la cause à mon problème:
Il vient de la fonction : GUICtrlSetState($_FrhEdit,$GUI_DISABLE)
Cette fonction est primordiale pour moi sinon indispensable pour désactiver copier-coller du texte du contrat.
La solution à ce problème consiste à garder la fonction "GUICtrlSetState($_FrhEdit,$GUI_DISABLE)" active en libérant le nombre de lignes visibles à la lecture.
Cordialement.
Répondre