Boucle for

Contenu du snippet

Voici un snippet qui permet l'utilisation d'une boucle FOR (pour) dans vos scripts.
Ceci n'est qu'une ébauche, il y a encore du travail.
Le FOR ne pourra gérer qu'une seule commande (qui devra être mise sur la même ligne que lui)
Tous les cas de figures pour une seule commande sont normalement bien gérés.
J'ai quelques problèmes pour les blocs de commandes.
Exemple :
/for (%i=1;%i<10;i++) {
<commande 1>
<commande 2>
<commande 3>
}

Si qq'un a une idée sur la manière de procéder... :)

Source / Exemple :


/*
Syntaxe : /for (initialisation>;<condition>;<modification>) /commande
Exemple d'utilisation : /for (%var=1;%var<=10;%var++) echo -a test
Ne gère pas les blocs de commande { ... }
Attention à ne mettre aucun espace entre les parenthèses du for

  • /
alias for { var %param1, %param2, %param3, %debut, %fin, %Pas, %i, %mod, %NbIteration $iif($regex($gettok($right($1,-1),1,59),^%\w+=-?\d+$), %param1 = 1, %param1 = 0) $iif(($regex($gettok($1,2,59),^%\w+(<|>)=?-?\d+$)),%param2 = 1, %param2 = 0) if ($regex($gettok($left($1,-1)$1,3,59),^%.+[^+-](-{2}|\+{2})\d*$)) { %param3 = 1 if $regex($gettok($left($1,-1)$1,3,59),\+{2}\d*$) { %i = $len($gettok($left($1,-1)$1,3,59)) %mod = inc while (%i > 1 && $mid($gettok($left($1,-1)$1,3,59), %i, 1) != +) { %Pas = $+($mid($gettok($left($1,-1)$1,3,59), %i, 1),$eval(%Pas)) dec %i } $iif(!%Pas, %Pas = 1) } elseif $regex($gettok($left($1,-1)$1,3,59),-{2}\d*$) { %i = $len($gettok($left($1,-1)$1,3,59)) %mod = dec while (%i > 1 && $mid($gettok($left($1,-1)$1,3,59), %i, 1) != -) { %Pas = $+($mid($gettok($left($1,-1)$1,3,59), %i, 1),$eval(%Pas)) dec %i } $iif(!%Pas, %Pas = 1) } } else { %param3 = 0 } if ((%param1) && (%param2) && (%param3)) { %debut = $gettok($gettok($right($1,-1),1,59),2,61) if ($regex($gettok($1,2,59),^%\w+<=-?\d+$)) { %fin = $gettok($gettok($1,2,59),2,61) while (%debut <= %fin) { $2- $iif(%Mod = inc, inc %debut %Pas, dec %debut %pas) } } elseif ($regex($gettok($1,2,59),^%\w+<-?\d+$)) { %fin = $gettok($gettok($1,2,59),2,60) while (%debut < %fin) { $2- $iif(%Mod = inc, inc %debut %Pas, dec %debut %pas) } } elseif ($regex($gettok($1,2,59),^%\w+>-?\d+$)) { %fin = $gettok($gettok($1,2,59),2,62) while (%debut > %fin) { $2- $iif(%Mod = inc, inc %debut %Pas, dec %debut %pas) } } elseif ($regex($gettok($1,2,59),^%\w+>=-?\d+$)) { %fin = $gettok($gettok($1,2,59),2,60) while (%debut >= %fin) { $2- $iif(%Mod = inc, inc %debut %Pas, dec %debut %pas) } } } else { echo -a 4Syntaxe incorrecte echo -a Syntaxe : /for (<initialisation>;<condition>;<modification>) /commande echo -a Exemple : /for (%i=1;%i<=10;%i++) echo -a test } }

Conclusion :


J'envisage de faire un tutoriel qui expliquera pas à pas le script.
Si un bug persiste, laissez un message ici, merci.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.