[R] Remplacer chaîne de caractère

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Narmeke
Niveau 6
Niveau 6
Messages : 247
Enregistré le : mer. 28 oct. 2009 11:31
Localisation : Libourne
Status : Hors ligne

[R] Remplacer chaîne de caractère

#1

Message par Narmeke »

Salut tous le monde ^^

J'ai un petit souci avec "StringReplace".
donc tous est dans la titre, je souhaiterais remplacer une chaine de caractère situé dans un fichier texte par une autre.

J'ai donc penser a "StringReplace" mais je ne comprend pas du tout comment on l'utilise.

Avant de poster j'ai fais plusieurs recherches :
Pour trouver ma chaîne j'utilise le code de @corrs78 et @orax ==> http://www.autoitscript.fr/forum/viewto ... ct%C3%A8re :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

;##################### FONCTION RECHERCHE DANS FICHIER ###########################

$windows = GUICreate ("Cherche numero inventaire UC" , 150 , 80 , ( @DesktopWidth-300 ) / 2 , ( @DesktopHeight-200 ) / 2, $WS_VISIBLE)

;Fonction de recherche numéro inventaire ordi
    $box_num_inv = GUICtrlCreateInput("", 20, 20, 60, 17)
    $bt_search = GUICtrlCreateButton(" -> ", 80, 20, 18, 18)


While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE

    Case $msg = $bt_search
        search_user_pc()

    EndSelect
    WEnd



Func search_user_pc()
    $search_num_inv = GUICtrlRead($box_num_inv)

    $pc_liste = FileOpen(@ScriptDir&"\test.txt", 0)
    If $pc_liste = -1 Then
        MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier !")
        Exit
    EndIf

    While 1
        $line = FileReadLine($pc_liste) ; on parcours chaque ligne du fichier TXT
        If @error = -1 Then ExitLoop
        If StringInStr($line, $search_num_inv) Then
            MsgBox(48, "trouvé : ", $line)
        EndIf
    WEnd

    FileClose($pc_liste)
EndFunc   ;==>search_user_pc
 
Mais ensuite, lorsqu'il faut remplacer la chaîne trouver je n'ai aucune idée :cry:
J'ai testouille plusieurs chose mais no succès...
J'ai également trouvé cela ==> http://www.autoitscript.fr/forum/viewto ... ace#p28326

Et j'ai cherché dans l'aide Autoit !
► Afficher le texte
Donc au final j'ai compris grace a l'aide, mais n'arrive pas a appliquer la fonction !!

Merci d'avance :oops: :roll:
Modifié en dernier par Narmeke le lun. 15 févr. 2010 18:10, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Remplacer chaîne de caractère

#2

Message par Tlem »

Vous aurez sans doute plus vite fait d'utiliser la fonction _ReplaceStringInFile().

:wink:
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é".
Avatar du membre
Narmeke
Niveau 6
Niveau 6
Messages : 247
Enregistré le : mer. 28 oct. 2009 11:31
Localisation : Libourne
Status : Hors ligne

Re: [..] Remplacer chaîne de caractère

#3

Message par Narmeke »

Ne fonctionne pas ! (ou plutôt je l'utilise mâle) :lol:

Voici mon code :

Code : Tout sélectionner

#Include <File.au3>

$FILE = FileOpen(@ScriptDir&"test.txt", 16)
_ReplaceStringInFile($FILE, "Ce que je cherche", "J'ai enfin trouvé", 1, 0) ;Paramètre 1 = Sensible a la casse || Paramètre 0 = Remplace le premier trouvé
Sleep(3000
 
Mais rien ne se passe !

Le fichier "test.txt" contient :
► Afficher le texte
Le contenu est sur plusieurs lignes...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Remplacer chaîne de caractère

#4

Message par Tlem »

Inutile de faire un FileOpen() et surtout regardez bien la syntaxe du chemin de votre fichier... :roll:

Ensuite, n'oubliez pas que selon les options de _ReplaceStringInFile() vous pouvez changer la première occurrence, ou toutes les occurrences.
Dans le code que vous avez mis, il ne change que la première occurrence. ;)
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é".
Avatar du membre
Narmeke
Niveau 6
Niveau 6
Messages : 247
Enregistré le : mer. 28 oct. 2009 11:31
Localisation : Libourne
Status : Hors ligne

Re: [..] Remplacer chaîne de caractère

#5

Message par Narmeke »

Merci Beaucoup @Tlem

Voici le code final :

Code : Tout sélectionner

#include <File.au3>

$FILE = "test.txt"
_ReplaceStringInFile($FILE, "Ce que je cherche", "J'ai enfin trouvé", 1, 0) ;Paramètre 1 = Sensible a la casse || Paramètre 0 = Remplace le premier trouvé
Sleep(3000)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Remplacer chaîne de caractère

#6

Message par Tlem »

Même si cela fonctionne, ca ne donne pas l'explication du problème. :roll:

Voici :
- Vous avez écrit :

Code : Tout sélectionner

$FILE = FileOpen(@ScriptDir&"test.txt", 16
au lieu de

Code : Tout sélectionner

$FILE = FileOpen(@ScriptDir&"[color=#FF0000][b]\[/b][/color]test.txt", 16
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é".
Répondre