Probleme de variable dans une boucle repeat

  • Créateur du sujet Créateur du sujet Ksone
  • Date de début Date de début

Ksone

Membre enregistré
17 Mai 2007
4
0
Bonjour à tous,
J'ai commencé à faire de l'AS il y a pas très longtemps du tout car j'ai un projet à réaliser,
J'ai une difficulté depuis ce matin sur une boucle repeat.

Voici l'extrait de mon code qui pose problème:

set i to 0
repeat nombreLigne times
set i to (i+1)
set "phrase"& i to text item i of LesLignes

if i = nombreLigne then exit repeat
end repeat


Ce que je veux faire c'est récupérer les lignes d'un fichier et appelé phrase1 la première ligne,phrase2 la deuxième etc...
Je suis parvenu à extraire chaque ligne mais mon probleme survient lorsque je veux leur donner les noms phrase1, phrase2 etc...

La syntaxe pour set "phrase"&i ne semble pas etre bonne.Comment faire pour pouvoir créer les variables phrase1,phrase2,phrase3...?

J'espere que j'ai été clair.Je vous remercie déjà d'avance de votre aide.
 
Je ne connais pas l'applescript, mais si j'ai bien compris, tu cherche à acceder et modifier des variable du rang i dans une boucle. Ça ne serait pas plus simple de les disposer dans un tableau et ensutie d'acceder à l'élément 'i' du tableau ?
 
Salut,

Est-il vraiment nécessaire que tu crées des variables pour chaque phrase ?
Je suppose que "LesLignes" est de type list et le plus simple, selon moi, serait d'y accéder avec "item i of LesLignes" sans essayer de créer une variable pour chaque élément...

S'il y avait plus de code et plus de précision sur le traitement que tu veux faire subir à tes phrase, il serait plus simple de t'aider, à moins que ton code ne soit confidentiel bien sûr. ;)
 
Il est nécessaire que je crée ces variables car plus bas dans mon code je dois appelé les variables phrase5 ou phrase4 etc..

Mon code est confidentiel car je fais un projet pour mon école et tout le monde a le meme sujet.On est ou moins 2000 à le faire et si il trouve mon code sur internet il se gêneront pas pour copier lol!

en faite ce que je veux faire avec mon AS c'est que je récupère un fichier qui contient des commandes de configuration pour un routeur,je veux les prendre une par une pour les éxécuter.J'arrive a le faire pour une ligne mais maintenant je modifie mon code avec des boucles pour qu'il puisse le faire avec toutes les lignes que mon fichier contient.

malheureusement c'est beaucoup plus compliqué que ce que je pensé.:(
 
Si tu peux exécuter les lignes les unes après les autres, il suffit de faire :

Ce n'est qu'un exemple de la procédure...

Bloc de code:
set theList to {"1", "2", "3", "4"} --représente "LesLignes

repeat with i from 1 to count of theList --on traite un élément à la fois
	set theItem to item i of theList --la variable prend la valeur de l'élément n° i de "theList"
	set theResult to theItem + 10 --traitement à effectuer
	display dialog theResult --vérification
end repeat
 
Bonjour

La solution de zacromatafalgar me paraît bonne. De toute façon, je ne suis pas sûr qu'on puisse fabriquer des noms de variables dynamiquement avec AppleScript (à confirmer).

A l'endroit où tu utilises tes variables dans ton code, il te suffit de remplacer phrase5 par item 5 of LesLignes, par exemple.

Edit: grillé par zacromatafalgar
 
Si tu peux exécuter les lignes les unes après les autres, il suffit de faire :

Ce n'est qu'un exemple de la procédure...

Bloc de code:
set theList to {"1", "2", "3", "4"} --représente "LesLignes

repeat with i from 1 to count of theList --on traite un élément à la fois
    set theItem to item i of theList --la variable prend la valeur de l'élément n° i de "theList"
    set theResult to theItem + 10 --traitement à effectuer
    display dialog theResult --vérification
end repeat

Il existe même en AppleScript un boucle spécialisé dans le parcours de tableau:
Bloc de code:
set theList to {"1", "2", "3", "4"} --représente "LesLignes

repeat with theItem in theList --on traite un élément à la fois
    set theResult to theItem + 10 --traitement à effectuer
    display dialog theResult --vérification
end repeat
Si tu n'es pas obligé de coder en AppleScript, je te conseillerais un autre langage comme python ou il suffirait simplement de faire:
Bloc de code:
for theItem in open("myfile","r").readlines():
    #traitement de theItem...
 
Rebonjour a tous merci bien de vos reponses,finalement j'ai changé tt mon code afin de pouvoir utilisé la solution de zacromatafalgar et de PA5CAL.

J'ai virer la partie que j'avais posté sur le forum et j'ai fait ma boucle plus bas en choisissant les lignes avec "text item i of lesLignes"

Je pense que j'aurais d'autre difficulté dans mon projet et je reviendrais donc encore peut etre vous embétez un peu si vous le voulez bien lol!

En tout cas encore merci à vous tous de vos reponses.:)