Page 1 sur 1

[R] Remplacer chaîne de caractère

Posté : dim. 14 févr. 2010 20:49
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:

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

Posté : dim. 14 févr. 2010 21:27
par Tlem
Vous aurez sans doute plus vite fait d'utiliser la fonction _ReplaceStringInFile().

:wink:

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

Posté : lun. 15 févr. 2010 11:20
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...

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

Posté : lun. 15 févr. 2010 17:33
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. ;)

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

Posté : lun. 15 févr. 2010 18:09
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)

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

Posté : lun. 15 févr. 2010 18:21
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