[..] Plugin scite automodification

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Plugin scite automodification

#21

Message par ricky »

Et pour continuer d'utiliser toujours le même, il ne serait pas possible que le script cherche tous les blocs %nimporte_quoi% et remplace dedans par le bon numéro de ligne?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Plugin scite automodification

#22

Message par Iste »

Et bien meme si je comprend pas trop dans quel cas cela peut arriver, il suffit de remplacer le

Code : Tout sélectionner

StringReplace($lines[$i], $VALUE, $i)
par un StringRegExpReplace()
Signez ici
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Plugin scite automodification

#23

Message par ricky »

Voilà mon code qui marche nickel, merci Iste pour ton aide.

Code : Tout sélectionner

#Include <File.au3>
#include <String.au3>

$StringStart = '"%'
$StringEnd = '%"'

$file = FileOpenDialog("open", "C:\", "Script (*.au3)")
preCompil($file)

Func preCompil(Const $file)
;~  Lire toutes les lignes du fichier
    Local $lines
    _FileReadToArray($file, $lines)

    $NbLines = 0

;~  Boucle For de remplacement
    For $i = 1 To $lines[0]
        ; recherche du contenu entre le Start et le end
        $arrayString = _StringBetween($lines[$i], $StringStart, $StringEnd)
        ; s'il ne trouve rien ou que le numéro de ligne est déjà le même il ne change rien
        if not @error and $arrayString[0] <> $i then
            $VALUE = $StringStart & $arrayString[0] & $StringEnd
            ; Remplace l'ancienne valeur par la nouvelle
            $lines[$i] = StringReplace($lines[$i], $VALUE, $StringStart & $i & $StringEnd)
            $NbLines += 1
        EndIf
    Next

    _FileWriteFromArray($file & "_compiled.au3", $lines, 1)
    MsgBox(0,"Precompil End", $NbLines & " modified.")

EndFunc
Ce code remplace tous les valeurs se trouvant entre $StringStart et $StringEnd.
Donc que ça soit la première fois ou la 5ème fois le numéro de la ligne sera updaté. Pas besoin de le réécrire dans un autre fichier avec un autre nom.

Maintenant, qui pourrait m'aider pour l'intégrer dans scite, le but est de lancer ce programme, en paramètre on peut y rentrer le nom du fichier (A y implémenter plus tard) et celui-ci la modifier le fichier original et ses includes.

Merci d'avance pour votre aide.
Répondre