Voici donc un UDF tout prêt pour une telle utilisation :
Fichier _FUpdate.au3 :
Code : Tout sélectionner
#include-once
;====================================================================================================================
; Name : _FUpdate
; Description : Replace string(s) in files
; Syntax : _FUpdate($SFile, $Str1, $Str2, $fCaseness, $StrErr)
; Parameter(s) : $SFile - The file to proceed.
; $Str1 - The string(s) to be replaced (Separate by |).
; $Str2 - The new string(s) (Separate by |).
; $StrErr - Return the string(s) not replaced.
; $fCaseness - Case sensitive (0 = default)
; Requirement(s) : File.au3
; Return value(s) : On Success - Returns 1 and sets:
; @Error = The numbers of no replaced string.
; $StrErr = The string(s) not replaced.
; On Failure - Returns 0
; Author : Tlem <tlem at tuxolem dot net>
; Note(s) : None
; ====================================================================================================================
Func _FUpdate($SFile, $Str1, $Str2, ByRef $StrErr, $fCaseness = 0)
; Vérification de la présence du fichier (Sinon pas la peine de continuer).
If Not FileExists($SFile) Then Return 0
; Récupération des attributs du fichier pour les remettres plus tard
$attrib = FileGetAttrib($SFile)
; Modification des attributs, pour pouvoir écrire dedans.
$Res = FileSetAttrib($SFile, "-RASH")
; Si le changement des attributs s'est mal déroulé, alors on sort.
If $Res = 0 Then Return 0
; Mise en tableau des valeurs à remplacer et de remplacement.
$Str1 = StringSplit($Str1, "|")
$Str2 = StringSplit($Str2, "|")
; Si il n'y à pas le meme nombre d'argument, on remet les attributs, et on sort.
If $Str1[0] <> $Str2[0] Then
FileSetAttrib($SFile, "+" & $attrib)
Return 0
EndIf
; Boucle de remplacement dans le fichier.
Dim $Err = 0
For $i = 1 To $Str1[0]
$Res = _ReplaceStringInFile($SFile, $Str1[$i], $Str2[$i], $fCaseness)
; Si la chaine n'a pas été remplacée, incrémentation de la variable $Err.
If $Res <= 0 Then
$Err = $Err + 1
$StrErr = $StrErr & $Str1[$i] & " => " & $Str2[$i] & @CRLF
EndIf
Next
; Remise en place des attributs
FileSetAttrib($SFile, "+" & $attrib)
; Pour indiquer que le fichier à été mofifier.
FileSetAttrib($SFile, "-A")
; Retourne le nombre de remplacement non effectué.
SetError($Err)
; Indique que des remplacements ont été effectués.
Return 1
EndFunc ;==>_FUpdate
Code : Tout sélectionner
Dim $SFile, $EN, $FR, $Res, $StrErr, $GErr
; Mise à jour du fichier Date.au3, pour afficher les jours et mois en Francais.
$SFile = $DirAutoit & "Include\Date.au3"
$EN = '["", "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"]|"Sunday"|"Monday"|"Tuesday"|"Wednesday"|"Thursday"|"Friday"|"Saturday"|' & _
'"January"|"February"|"March"|"April"|"May"|"June"|"July"|"August"|"September"|"October"|"November"|"December"'
$FR = '["", "Jan", "Fev", "Mar", "Avr", "Mai", "Juin", "Jull", "Aout", "Sept", "Oct", "Nov", "Dec"]|"Dimance"|"Lundi"|"Mardi"|"Mercredi"|"Jeudi"|"Vendredi"|"Samedi"|' & _
'"Janvier"|"Fevrier"|"Mars"|"Avril"|"Mai"|"Juin"|"Juillet"|"Aout"|"Septembre"|"Octobre"|"Novembre"|"Decembre"'
$Res = _FUpdate($SFile, $EN, $FR, $StrErr)
If $Res = 0 Then $GErr = 1
Code : Tout sélectionner
Dim $SFile, $EN, $FR, $Res, $StrErr, $GErr
; =============================================================================
; Mise à jour de la fonction _StringProper() du fichier string.au3,
; pour prendre en compte les caractères accentués.
$SFile = $DirAutoit & "Include\String.au3"
$EN = '[a-zA-Z]'
$FR = '[a-zA-ZÀ-ˆ]'
$Res = _FUpdate($SFile, $EN, $FR, $StrErr)
;MsgBox(0,"Infos ", "Code retour = " & $Res & @CRLF & "Code erreur = " & @error & @CRLF & $StrErr)
If $Res = 0 Then $GErr = 1
; =============================================================================