Archives actuelles avec moteur de recherche
N'hésitez pas à vous inscrire à la liste : http://listes.patpro.net/mailman/listinfo/applescript_fr
Apple, AppleScript, AppleScript Studio, AppleTalk, AppleWorks, ColorSync, Finder, HyperCard, iBook, iLife, iMac, iWork, Keynote, Mac, Macintosh, Mac OS, Pages, Panther, PowerBook, Power Mac, Power Macintosh, QuickTime, Safari, Tiger, Xcode sont des marques déposées par Apple Computer, Inc., enregistrées aux Etats-Unis et dans les autres pays. Liste officielle
De : (Liste AppleScript francophone) <applescript_fr@xxxxxxx.net>
À : "(Liste AppleScript francophone)" <applescript_fr@xxxxxxx.net>
Date : mercredi 1 mai 2002 07:01
Objet : applescript_fr Digest #485
Liste AppleScript francophone Digest #485
1) A Reference To
by nicolas descombes <nicolas.descombes@xxxxxxx.fr>
2) Script ne marche plus avec AS 1.7
by "H. Fagard" <herve.fagard@xxxxxxx.fr>
3) AS et OS X
by tremen@xxxxxxx.fr
4) Re: AS et OS X
by patpro <patpro@xxxxxxx.net>
5) WorkFlow est doublons de fichiers
by PDescamps@xxxxxxx.Com
6) Re: WorkFlow est doublons de fichiers
by Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr>
7) Re: WorkFlow est doublons de fichiers
by Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr>
8) Re: WorkFlow est doublons de fichiers
by Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr>
9) Re: WorkFlow est doublons de fichiers
by nicolas descombes <nicolas.descombes@xxxxxxx.fr>
10) Re: WorkFlow est doublons de fichiers
by nicolas descombes <nicolas.descombes@xxxxxxx.fr>
11) Re: WorkFlow est doublons de fichiers (erratum)
by nicolas descombes <nicolas.descombes@xxxxxxx.fr>
12) Re: Script ne marche plus avec AS 1.7
by Daniel Varlet <varlet@xxxxxxx.ch>
13) Re: A Reference To
by Daniel Varlet <varlet@xxxxxxx.ch>
14) Particularités du gestionnaire Run (was: Re: [AS] A Reference To)
by Daniel Varlet <varlet@xxxxxxx.ch>
De : nicolas descombes <nicolas.descombes@xxxxxxx.fr> Date : Tue, 30 Apr 2002 10:15:30 +0200 Objet : [AS] A Reference To Bonsoir, j'ai voulu tester l'opérateur A Reference To et avec les scripts qui suivent [SCRIPT] -- 1er script set x to {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} set xRef to a reference to x set liste to {} set rang to 1 repeat (count items of x) times set the end of liste to (item rang of xRef) set rang to (rang + 1) end repeat liste -- fin 1er script -- 2d script test() on test() script john property x : {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} end script set xRef to a reference to john's x set liste to {} set rang to 1 repeat (count items of john's x) times set the end of liste to (item rang of xRef) set rang to (rang + 1) end repeat return liste end test -- fin 2d script [/SCRIPT] Avec le premier, pas de problèmes, AS obtient les valeurs correspondant aux références. Par contre avec le deuxième, AS bloque sur le A Reference To. Pour pouvoir utiliser 'A Reference To' dans une routine et garder tout le monde ensemble, il a fallu que j'isole la liste initiale dans un script-objet. Est-il possible d'utiliser 'A Reference To' dans une routine sans avoir à mettre la liste initiale au top niveau du script ou encadrer dans un script-objet ? Moi, je répondrais non, mais qui sait ! a+ Nicolas -- Traduction française de AppleScript Language Guide 1.3.7 Tome 1 -> 6 disponibles Sommaire général avec liens directs <http://trad.applescript.free.fr/Accueil.html> --
De : "H. Fagard" <herve.fagard@xxxxxxx.fr> Date : Tue, 30 Apr 2002 16:24:10 +0200 Objet : [AS] Script ne marche plus avec AS 1.7 Bonjour, Je suis nouveau sur cette liste, et viens faire appel à votre aide pour m'aider à refaire fonctionner un script qui marchait parfaitement en MacOS 8.6, et qui ne marche plus du tout depuis que je suis en MacOS 9.2.2. Ce script me servait à génèrer des fichiers texte (un par fiche) à partir d'une base FMPro. Un des modèles (appelé "Site log partielle") de cette base comporte 5 rubriques: - la rubrique 1 contient du texte, - la rubrique 2 contient le nom d'un fichier texte externe "nom2", - la rubrique 3 contient du texte, - la rubrique 4 contient le nom d'un fichier externe externe "nom4", - la rubrique 5 contient le nom du fichier texte résultat ("nom"). L'AppleScript permet de concaténer les 4 textes (rubrique 1 + contenu du fichier "nom2" + rubrique 3 + contenu du fichier "nom4") et met le tout dans le fichier "nom". Les noms de fichier "nom", "nom2" et "nom4" sont des variables, qui changent pour chaque fiche. ---------------------- Libellé du script -------------------------------- set TexteFichiers1 to {} set NomFichiers2 to {} set TexteFichiers3 to {} set NomFichiers4 to {} set NomFichiers to {} tell application "FileMaker Pro" open file "Données:DORIS:Fiches:Fiches DORIS" set NombreFiches to count of record show layout "Site log partielle" repeat with i from 1 to NombreFiches (*boucle de 1 à nombre de fiches*) set TexteFichiers1 to TexteFichiers1 & (cell 1 of record i) set NomFichiers2 to NomFichiers2 & (cell 2 of record i) set TexteFichiers3 to TexteFichiers3 & (cell 3 of record i) set NomFichiers4 to NomFichiers4 & (cell 4 of record i) set NomFichiers to NomFichiers & (cell 5 of record i) end repeat end tell tell application "Finder" set DossierCible to folder "Données:DORIS:Fiches:Site logs" set DossierSource to folder "Données:DORIS:Fiches:sitelog03_02" repeat with i from 1 to NombreFiches set Texte1 to item i of TexteFichiers1 set nom2 to item i of NomFichiers2 set Texte3 to item i of TexteFichiers3 set nom4 to item i of NomFichiers4 set nom to item i of NomFichiers if file nom of DossierCible exists then delete file nom of DossierCible set fichier to make file in DossierCible with properties {name:nom} open for access fichier with write permission <---- c'est ici que ça plante open for access file nom2 of DossierSource set fichier2 to file nom2 of DossierSource set Texte2 to read of fichier2 open for access file nom4 of DossierSource set fichier4 to file nom4 of DossierSource set Texte4 to read of fichier4 close access fichier2 close access fichier4 write Texte1 to fichier as string write Texte2 to fichier as string write Texte3 to fichier as string write Texte4 to fichier as string close access fichier end repeat end tell ------------------------------------------------------------------------- Ca plante avec le message suivant : "Finder a généré une erreur : Le fichier AMTB0402.LOG est introuvable". Pourtant le fichier en question existe bien, et il est bien dans le dossier défini dans le script. Le blocage se fait sur la ligne : open for access fichier with write permission Ca plante donc au moment de l'ouverture du fichier "nom", et ceci dès la première fiche. Pourtant le fichier "nom" est bien créé à l'étape précédente, il existe bien, et DossierCible est bien défini plus haut dans le script comme étant le dossier qui contient ce fichier. J'ai posé la question sur la liste FMPro, et Jean-Marie Hoonaert a essayé de me dépanner, sans succès. Il m'a même fourni un script simple permettant de tester la commande "open for access..." qui me pose problème, et alors que ce script marche chez lui (il est en OS 9.1, AS 1.6), ça plante chez moi (OS 9.2.2, AS 1.7). Je crains que l'explication de mes soucis ne se trouve dans ce message : ----------------------------------- From: Chris Espinosa <cde@xxxxxxx.com> To: applescript-users@xxxxxxx.apple.com Date: Tue, 15 Jan 2002 14:03:33 -0800 [...] We did [...] release new versions of AppleScript with last-minute changes that caused problems in commonly-used applications. We've documented these known problems and are working on fixes for them. The current release notes for AppleScript can be found at: http://www.apple.com/applescript/macosx/release_notes/181.html (1.8.1 for Mac OS X 10.1.2) http://www.apple.com/applescript/macosx/release_notes/1.7.html (1.7 for Mac OS 9.2.2) These notes document the dozens of bug fixes and product improvements we've put into these versions, as well as some of the problems we're aware of, which include: - coercion handlers and Standard Additions that break many solutions and applications, including Smile, on Mac OS 9 - poor performance and occasional crashes in some applications on 9 and Classic, notably Claris Emailer - occasional crashes in Script Debugger 3.0 on Mac OS X Because of the nature of the problems in Mac OS 9.2.2, we will be shipping AppleScript 1.6 on new CPUs that use Mac OS 9.2.2 (the 9.2.2 Software Update will continue to install version 1.7). We'll be posting instructions shortly on how to reinstall AppleScript 1.6 for use with the 9.2.2 Software Update. [...] I thank you for your patience while we address these issues and for your commitment to the AppleScript technology. Regards, Chris Espinosa Manager, Components & Scripting Apple ----------------------------------- Apparemment une réinstallation d'AS 1.6 pourrait améliorer les choses, mais je n'ai pas trouvé sur le site Apple/AppleScript la suite de l'histoire ("We'll be posting instructions shortly on how to reinstall AppleScript 1.6 for use with the 9.2.2..."). A part cette solution extrême, j'ai trouvé ça en bas de la page http://www.apple.com/applescript/macosx/release_notes/1.7.html : The open for access command in Standard Additions 1.7 does not set the type and creator of newly-created files to type 'TEXT', creator 'ttxt', so the files cannot be read by most other applications or double-clicked in the Finder. In the following example, after creating file this_file, perform the following steps: tell application "Finder" set file type of file this_file to "TEXT" set creator type of file this_file to "ttxt" end tell J'ai donc essayé, mais ça ne change rien. Enfin, dans les archives de la liste AppleScript à laquelle je m'adresse aujourd'hui, j'ai lu que les caractères accentués dans le chemin d'accès à un fichier pouvait poser des problèmes, j'ai donc renommé mon volume en conséquence, mais c'est pareil. Merci d'avance pour votre aide, Hervé
De : tremen@xxxxxxx.fr Date : Tue, 30 Apr 2002 17:42:53 +0200 (MEST) Objet : [AS] AS et OS X Salut tout le monde. Je teste OS X dans le but de préparer mon passage déffinitif à cet OS "du futur", et dans cette phase de test j'en arrive à AS. J'ai téléchargé les Developper's Tools, mais ne les ai pas encore installés. Avant d'aller plus loin, j'ai quelques questions à poser à ceux qui maîtrise déjà un peu le sujet. 1. Comment faire en sorte qu'un script vanilla développé sur OS 9 fonctionne sur X ? Il me semble qu'il suffit de le recompilé sous cet OS. Est-ce juste? 2. Exixte-t'il un système genre "compléments de pilotage" sous X ? - Si oui, en quoi cela conciste-t'il, et des OSAXEN ont-ils déjà été mis à jour ? - Si non, est-il vraiment impossible de faire fonctionner tous mes scripts non vanilla nés dans le sang et la sueur ? 3. Avant d'installer les Developper's Tools il y a-t'il des "trucs" que je dois savoir ? (genre : "attention malheureux, ça c'est dangereux", "Ca si tu ne veux faire que de l'AS, tu n'en as pas besoin"...) Merci d'avance. Stéphane.
De : patpro <patpro@xxxxxxx.net> Date : Tue, 30 Apr 2002 17:55:55 +0200 Objet : [AS] Re: AS et OS X le 30/04/02 17:42, tremen@xxxxxxx.fr à tremen@xxxxxxx.fr a écrit : > Salut tout le monde. > > Je teste OS X dans le but de préparer mon passage déffinitif à cet OS "du > futur", et dans cette phase de test j'en arrive à AS. J'ai téléchargé les > Developper's Tools, mais ne les ai pas encore installés. Avant d'aller plus > loin, j'ai quelques questions à poser à ceux qui maîtrise déjà un peu le > sujet. > > 1. Comment faire en sorte qu'un script vanilla développé sur OS 9 fonctionne > sur X ? Il me semble qu'il suffit de le recompilé sous cet OS. Est-ce juste? pas tjrs il se peut que certaines commandes ne fonctionnent pas comme attendu :) > 2. Exixte-t'il un système genre "compléments de pilotage" sous X ? > - Si oui, en quoi cela conciste-t'il, et des OSAXEN ont-ils déjà été mis à > jour ? oui, c'est pareil que sous OS9, seul l'emplacement est différent. Les Osax sont portées mais très lentement je trouve... > 3. Avant d'installer les Developper's Tools il y a-t'il des "trucs" que je > dois > savoir ? (genre : "attention malheureux, ça c'est dangereux", "Ca si tu ne > veux faire que de l'AS, tu n'en as pas besoin"...) pas que je sache, j'ai tjrs fait les installations completes des DevTools. Aucun probleme à signaler. patpro
De : PDescamps@xxxxxxx.Com Date : Tue, 30 Apr 2002 18:01:32 +0200 Objet : [AS] WorkFlow est doublons de fichiers Hello Pour en finir definivement avec les doublons de fichiers dans Mes scripts, j'ai opté pour la formule suivante (note, mes listes de fichiers sont des fichiers graphique .JPG) exemple de referencement des fichiers : 0000 12345.jpg Lorsque je copie les fichiers d'un dossier "A" vers un dossier "B" il est evident que tous se passe bien au depart. Move de A vers B -->ok S'il y a un fichier portant le meme nom dans mon dossier B, le fichier est alors renommer : 0000 12345 A.jpg (On y ajoute " A"). Le A est recupere dans une liste reference en debut de script sous la forme suivante set ma_liste_Alphabethique to {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} Move de A vers B avec un doublon -->ok Seulement Voila. je teste le nom de mon fichier ex : 0000 12345 A.jpg si le cinquieme caractere en commençant par la fin est alphabethique est que le fichiers 0000 12345 A.jpg existe dans mon dossier de destination il faut que le A devienne B. Si ce caractere été "H" il faudrait qu'il devienne "J" etc...etc... et la je me plante lamentablement Voici mon script. Je vous le donne ;-))) [Script] global DataInput global mondossierARR global ma_liste_de_fichiers set RR to 0 set ma_liste_Alphabethique to {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} as list get ma_liste_Alphabethique set DataInput to choose folder with prompt "choisissez un dossier d'entrée" tell application "Finder" to set ma_liste_de_fichiers to files of DataInput set mondossierARR to choose folder with prompt "choisissez un dossier de destination" tell application "Finder" repeat with i from 1 to count items of ma_liste_de_fichiers set Le_fichier_a_copier to item i of ma_liste_de_fichiers try move Le_fichier_a_copier to mondossierARR on error set RR to 1 repeat set ALPHAB to item RR of ma_liste_Alphabethique select Le_fichier_a_copier set le_nom_du_Fichier to the name of selection set Compt to the count of characters of le_nom_du_Fichier set refProduit to characters -5 thru -Compt of le_nom_du_Fichier as string set suffixe to characters -1 thru -4 of le_nom_du_Fichier as string set DernierCaractere to character -5 of le_nom_du_Fichier as string if DernierCaractere is in ma_liste_Alphabethique then set RR to RR + 1 set refProduit to characters -6 thru -Compt of le_nom_du_Fichier as string end if set newRef to refProduit & " " & ALPHAB & suffixe set name of selection to newRef try move selection to mondossierARR set transfert to 1 if transfert = 1 then exit repeat end if set RR to RR + 1 end try end repeat end try end repeat end tell [/SCRIPT]
De : Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr> Date : Tue, 30 Apr 2002 20:52:43 +0200 Objet : [AS] Re: WorkFlow est doublons de fichiers J'avais déjà été confronté à ce problème. Je t'envoie déjà un script que j'avais fait qui enregistre les adresses des fenêtres d'Explorer ouvertes (j'en ai parfois un paquet ;-) dans le fichier Adresses, Adresses1 s'il existe, Adresses2 s'il existe aussi, etc. Tu devrais pouvoir adapter ça... [script] set leTexte to "" tell application "Internet Explorer" repeat with cetteFenetre in ListWindows set leTexte to leTexte & item 1 of (GetWindowInfo cetteFenetre) & return end repeat end tell tell application "Finder" set laBase to ("Macintosh HD:Desktop Folder:" & "Adresses") set leChemin to laBase if exists item leChemin then set i to 2 set leChemin to laBase & i repeat while exists item leChemin set i to i + 1 set leChemin to laBase & i end repeat end if set monFichier to leChemin open for access file monFichier with write permission set monFichierAlias to leChemin as alias write leTexte to monFichierAlias close access file monFichier end tell display dialog "Terminé !" & return & return & return ¬ & "Adresses écrites dans le fichier " & text items 29 thru (length of leChemin) of leChemin ¬ & "." buttons {"OK"} default button 1 [/script] Nico
De : Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr> Date : Tue, 30 Apr 2002 21:23:40 +0200 Objet : [AS] Re: WorkFlow est doublons de fichiers C'est très pratique, ça, mettre item -i of maListe pour obtenir l'ième élément en partant de la fin, j'aurai appris quelque chose ! Ton script, chez moi, n'est pas validé, le "on error" étant obligatoire lors d'un try, même si vide. Ce que je ne trouve pas très intelligent (le else est bien facultatif lors d'un if), mais bon. En tout cas, j'ai une piste... [bout de ton script] try move selection to mondossierARR set transfert to 1 if transfert = 1 then exit repeat end if set RR to RR + 1 end try [/bout de ton script] Déjà, pour que le script soit validé, je rajoute un "on error", ce qui donne : [bout de ton script modifié 1] try move selection to mondossierARR set transfert to 1 if transfert = 1 then exit repeat end if set RR to RR + 1 on error end try [/bout de ton script modifié 1] Une source possible de ton erreur est que (je viens de vérifier dans le cours de Patpro) dans un try si une erreur se produit le comportement n'est pas « Je continue et quand j'arriverai au "on error" j'exécuterai ce qu'il y a dedans. », mais « J'arrête tout, je saute tout de suite au "on error" et j'exécute ce qu'il y a dedans. ».
De : Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr> Date : Tue, 30 Apr 2002 21:43:39 +0200 Objet : [AS] Re: WorkFlow est doublons de fichiers (J'ai envoyé ce message par erreur, je n'avais pas fini de le taper. Je continue, donc. Et puis d'abord, c'est la faute de Musashi qui a ses icônes foutues n'importe comment, et sans texte permanent, mais j'arrête, pask'on va me dire que je suis hors-sujet et on aura raison. ;-)) C'est très pratique, ça, mettre item -i of maListe pour obtenir l'ième élément en partant de la fin, j'aurai appris quelque chose ! Ton script, chez moi, n'est pas validé, le "on error" étant obligatoire lors d'un try, même si vide. Ce que je ne trouve pas très intelligent (le else est bien facultatif lors d'un if), mais bon. En tout cas, j'ai une piste... [bout de ton script] try move selection to mondossierARR set transfert to 1 if transfert = 1 then exit repeat end if set RR to RR + 1 end try [/bout de ton script] Déjà, pour que le script soit validé, je rajoute un "on error", ce qui donne : [bout de ton script modifié 1] try move selection to mondossierARR set transfert to 1 if transfert = 1 then exit repeat end if set RR to RR + 1 on error end try [/bout de ton script modifié 1] Une source possible de ton erreur est que (je viens de vérifier dans le cours de Patpro) dans un try si une erreur se produit le comportement n'est pas « Je continue et quand j'arriverai au "on error" j'exécuterai ce qu'il y a dedans. », mais « J'arrête tout, je saute tout de suite au "on error" et j'exécute ce qu'il y a dedans. ». Là, s'il y a une erreur (fichier existant), l'ordi sautera au "on error", et comme il n'y a rien dedans ne fera rien. Il recommencera donc la boucle sans faire set RR to RR + 1. Donc : [bout de ton script modifié 2] try move selection to mondossierARR exit repeat -- Si on arrive jusqu'ici, c'est forcément qu'il n'y a pas eu d'erreur. on error set RR to RR + 1 end try [/bout de ton script modifié 2] Ça devrait marcher... (J'ai pas testé tout ça.) Par ailleurs, de façon générale, il ne doit pas y avoir beaucoup de cas où [script] set a to b if a = b then (********) end if [/script] soit très utile. ;-) Par contre c'est pas idiot d'utiliser les erreurs pour vérifier si le fichier existe déjà. Dans ma version je faisais d'abord des "if exists file...". Je me pose une question : en AppleScript est-ce « dangereux » d'essayer de copier un fichier alors qu'il y en a déjà un et de gérer les erreurs éventuelles ? Est-ce plus prudent de tester l'existence avant ? Ou seulement plus propre ? Ou même pas plus propre, et je me complique la vie inutilement ? Merci ! @+ Nico
De : nicolas descombes <nicolas.descombes@xxxxxxx.fr> Date : Tue, 30 Apr 2002 21:58:35 +0200 Objet : [AS] Re: WorkFlow est doublons de fichiers >Le 30/04/02 21:23, Nicolas Barbulesco a écrit : > C'est très pratique, ça, mettre item -i of maListe pour obtenir l'ième > élément en partant de la fin, j'aurai appris quelque chose ! > ou item i of (reverse of maListe) ou tu inverses directement la liste initiale dans la boucle, la liste est traitée à l'envers. repeat with i in (reverse of maListe) ........ end repeat salut, j'ai du travail html à faire ce soir a+ Nicolas -- Traduction française de AppleScript Language Guide 1.3.7 Tome 1 -> 6 disponibles Sommaire général avec liens directs <http://trad.applescript.free.fr/Accueil.html> --
De : nicolas descombes <nicolas.descombes@xxxxxxx.fr> Date : Tue, 30 Apr 2002 22:28:17 +0200 Objet : [AS] Re: WorkFlow est doublons de fichiers >Le 30/04/02 21:43, Nicolas Barbulesco a écrit : > Par contre c'est pas idiot d'utiliser les erreurs pour vérifier si le > fichier existe déjà. Dans ma version je faisais d'abord des "if exists > file...". Je me pose une question : en AppleScript est-ce « dangereux » > d'essayer de copier un fichier alors qu'il y en a déjà un et de gérer les > erreurs éventuelles ? Est-ce plus prudent de tester l'existence avant ? Ou > seulement plus propre ? Ou même pas plus propre, et je me complique la vie > inutilement ? si le dossier devant accueillir les nouvelles photos est volumineux, il est préférable, si tu reportes son contenu dans une liste, d'utiliser l'opérateur 'A Reference To' pour traiter cette liste. Le temps de traitement d'une liste volumineuse avec l'opérateur 'A Reference To' est plus rapide que sans [SCRIPT] -- Test de A Reference To set a to {} set aRef to a reference to a set b to {} set bRef to a reference to b set n to 10000 set x to 0 -- sans l'utilisation de A Reference To set t0 to (current date) repeat n times set end of a to x set x to x + 1 end repeat repeat n times set end of b to a end repeat set t1 to (current date) ----------------------------- set b1 to b -- 1ère résultat set x to 0 -- remise à zéro de x -- en utilisant A Reference To set t2 to (current date) repeat n times set end of aRef to x set x to x + 1 end repeat repeat n times set end of bRef to aRef end repeat set t3 to (current date) ---------------------- set b2 to b -- 2ème résultat {(t1 - t0), (t3 - t2), (b1 = b2)} -- avec G3 233 Mhz OS 8.6 96 Mo -- -- résultat : {47, 13, true} [/SCRIPT] Gain : 25 %. Appréciable tout de même. a+ Nicolas -- Traduction française de AppleScript Language Guide 1.3.7 Tome 1 -> 6 disponibles Sommaire général avec liens directs <http://trad.applescript.free.fr/Accueil.html> --
De : nicolas descombes <nicolas.descombes@xxxxxxx.fr> Date : Tue, 30 Apr 2002 22:39:09 +0200 Objet : [AS] Re: WorkFlow est doublons de fichiers (erratum) >Le 30/04/02 22:28, nicolas descombes a écrit : >> Le 30/04/02 21:43, Nicolas Barbulesco a écrit : > > >> Par contre c'est pas idiot d'utiliser les erreurs pour vérifier si le >> fichier existe déjà. Dans ma version je faisais d'abord des "if exists >> file...". Je me pose une question : en AppleScript est-ce « dangereux » >> d'essayer de copier un fichier alors qu'il y en a déjà un et de gérer les >> erreurs éventuelles ? Est-ce plus prudent de tester l'existence avant ? Ou >> seulement plus propre ? Ou même pas plus propre, et je me complique la vie >> inutilement ? > > si le dossier devant accueillir les nouvelles photos est volumineux, il est > préférable, si tu reportes son contenu dans une liste, d'utiliser l'opérateur > 'A Reference To' pour traiter cette liste. Le temps de traitement d'une liste > volumineuse avec l'opérateur 'A Reference To' est plus rapide que sans > Gain : 25 %. Appréciable tout de même. je me suis gourrache. Gain : Env. 75 % . Encore mieux!!!!!!! a+ Nicolas -- Traduction française de AppleScript Language Guide 1.3.7 Tome 1 -> 6 disponibles Sommaire général avec liens directs <http://trad.applescript.free.fr/Accueil.html> --
De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Wed, 1 May 2002 04:52:59 +0200 Objet : [AS] Re: Script ne marche plus avec AS 1.7 À 16:24 +0200 le 30.04.2002, H. Fagard écrivait au sujet de "[AS] Script ne marche plus avec AS 1.7" : [...snip...] > Apparemment une réinstallation d'AS 1.6 pourrait améliorer les > choses, mais je n'ai pas trouvé sur le site Apple/AppleScript la > suite de l'histoire ("We'll be posting instructions shortly on how to > reinstall AppleScript 1.6 for use with the 9.2.2..."). Effectivement AS 1.7 est la plus belle cacade qu'ai fait Apple depuis longtemps. C'est confirmé depuis longtemps par tout le monde. Et si tu n'avais pas dégainé le mail de Chris Espinossa, je l'aurais fait... Apple n'a donc toujours pas réagit pour les nouveau 9.2.2 !!!!????? Il te faut donc te procurer (en VF) : (330 ko stuffité. Si tu n'as pas, tu me demandes en privé) AS 1.6 Compléments standard FU1-1.6 et les installer à la place des 1.7 C'est comme ça que que je tourne depuis le : Daniel Varlet 07.12.2001 22:21 "[AS] Re: WARNING maj. OS 9.2.2. Confirmation." Sans aucun problème. L'Éditeur de scripts 1.7 à l'air de fonctionner correctement. Sinon tu as AS 1.8 en bêta : ---------------------------------------------------------------------- Path: imp.ch!news.imp.ch!news.imp.ch!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!logbridge.uoregon.edu!pln-w!spln!dex!extra.newsguy.com!newsp.newsguy.com!michelle From: Michelle Steiner <michelle@xxxxxxx.org> Newsgroups: alt.comp.lang.applescript Subject: Re: Applescript ver 1.7 question... Date: Mon, 29 Apr 2002 08:42:08 -0700 Organization: Society for the Preservation of Endangered Societies Lines: 15 Message-ID: <michelle-F01539.08420829042002@xxxxxxx.newsguy.com> References: <35ae0d7f.0204290641.e243d@xxxxxxx.google.com> NNTP-Posting-Host: p-187.newsdawg.com User-Agent: MT-NewsWatcher/3.2 (PPC Mac OS X) x-no-archive: yes Xref: imp.ch alt.comp.lang.applescript:3821 In article <35ae0d7f.0204290641.e243d@xxxxxxx.google.com>, bobcathy2@xxxxxxx.com (Robert Rutledge) wrote: > Question: Is there any other way to get good performance using OS > 9.2.2? Yes. Downgrade to AS 1.6 or upgrade to AS 1.8.2, which is currently in beta, but available at Apple's developers web site. It should be released in a week or two, according to rumors. --Michelle -- We're not human beings having a spiritual experience. We're spiritual beings having a human experience. ---------------------------------------------------------------------- A+ -- Daniel
De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Wed, 1 May 2002 04:56:18 +0200 Objet : [AS] Re: A Reference To À 10:15 +0200 le 30.04.2002, nicolas descombes écrivait au sujet de "[AS] A Reference To" : > Bonsoir, > > j'ai voulu tester l'opérateur A Reference To > > et avec les scripts qui suivent > > [SCRIPT] > > > -- 1er script > set x to {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} > set xRef to a reference to x > set liste to {} > set rang to 1 > > repeat (count items of x) times > set the end of liste to (item rang of xRef) > set rang to (rang + 1) > end repeat > > liste > -- fin 1er script > > -- 2d script > test() > > on test() > script john > property x : {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} > end script > set xRef to a reference to john's x > set liste to {} > set rang to 1 > repeat (count items of john's x) times > set the end of liste to (item rang of xRef) > set rang to (rang + 1) > end repeat > > return liste > end test > -- fin 2d script > > [/SCRIPT] > > Avec le premier, pas de problèmes, AS obtient les valeurs correspondant aux > références. > > Par contre avec le deuxième, AS bloque sur le A Reference To. Pour pouvoir > utiliser 'A Reference To' dans une routine et garder tout le monde ensemble, > il a fallu que j'isole la liste initiale dans un script-objet. > > Est-il possible d'utiliser 'A Reference To' dans une routine sans avoir à > mettre la liste initiale au top niveau du script ou encadrer dans un > script-objet ? > > Moi, je répondrais non, mais qui sait ! Subtilités & complications de AS... La suite ;-))) Oui, c'est possible. Si tu globalises x dans la routine... (Bien entendu aussi, avec property ou global au top niveau.) on test() global x .... end Quelques éléments de réponse : set x to {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} set xRef to a reference to x get xRef --> x of «script» Dans tous les gestionnaires : Routine (= gestionnaire perso) ou run, etc... x est recherché comme appartenant au script enveloppe. AS ne cherche pas dans les routines... Ce qui n'est pas d'une logique évidente, je te l'accorde, puisque dans ton exemple tout se passe dans la routine, et que la portée d'une variable définie dans une routine (par 'set', 'copie') est cette routine. Doit-on en déduire que 'A Reference To' ne peut pas référencer précisément une variable définie dans une routine ( x of «handler test» of «script»). Ça m'en a tout l'air. (non documenté par Apple ????) Ta question m'a entraîné vers d'autres réflexions que je poste dans un mail différent. Je pense que ça peut intéresser et être utile. A+ -- Daniel
De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Wed, 1 May 2002 05:39:00 +0200 Objet : [AS] Particularités du gestionnaire Run (was: Re: [AS] A Reference To) Suite à la question de Nicolas : À 10:15 +0200 le 30.04.2002, nicolas descombes écrivait au sujet de "[AS] A Reference To" : > Bonsoir, > > j'ai voulu tester l'opérateur A Reference To > > et avec les scripts qui suivent > > [SCRIPT] > > > -- 1er script > set x to {1, 2, 3, 4, 5, 6, 7, 8, 9, 0} > set xRef to a reference to x > set liste to {} > set rang to 1 > > repeat (count items of x) times > set the end of liste to (item rang of xRef) > set rang to (rang + 1) > end repeat > > liste > -- fin 1er script [... 'A Reference To ' ne référence pas la variable locale d'une routine...] Question que je me suis posée : - Mais pourquoi 'A Reference To ' fonctionne, si la variable est définie dans le Run ? (le premier script de Nicolas). Run n'est après tout qu'un gestionnaire comme un autre. Réponse : - C'est au contaire un gestionnaire très spécial...Le Run implicite ou explicite (on run...end run) a des "vertus" très particulières... Liste non exhaustive (et personnelle) des "vertus" du gestionnaire Run : <Remarque> On peut écrire un gestionnaire Run implicite n'importe comment, ou presque. Par exemple on peut le morceler entre d'autres gestionnaires. À éviter évidemment si on veut se relire.... cf exemple 0 </Remarque> Si une variable est définie dans un gestionnaire Run par 'set' ou 'copy' : - elle sera persistante d'une exécution à l'autre. Comme une globale ou une propriété... (non documenté par Apple) . cf exemple (1) - AS va la chercher, si cette variable est définie par ailleurs comme globale dans un autre gestionnaire (documenté par Apple). cf exemple (2) Je rajoute une autre "vertu" à la lumière des derniers rebondissements ;-) : - Le gestionnaire Run "hérite" des variables qui sont définies comme globales dans les routines. Voir mon mail précédent. (non documenté par Apple) cf exemple (3) Toutes ces "vertus" principales sont annulées si une déclaration 'local maVariable' est ajoutée dans le gestionnaire Run. (merci Laurent Sebilleau) Il est possible que certaines de ces "vertus" s'appliquent à d'autres gestionnaires de commandes (open, reopen, idle, etc...). Je n'ai pas vérifié. Exemples : [SCRIPT exemple 0- écriture crados] set x to 1 test() on test() global x set x to x + 1 end test get x [/SCRIPT] [SCRIPT exemple 1- Persistance de x] -- à exécuter plusieurs fois de suite try set x to x + 1 on error set x to 1 end try get x -->1 -->2 -->3 --> etc... [/SCRIPT] [SCRIPT exemple 2- AS va chercher x dans le Run] on test() global x-- cherche x dans le Run set x to x + 1 end test set x to 1 test() get x --> 2 [/SCRIPT] [SCRIPT exemple 3 - le Run "hérite" de x] on test() -- global x -- à tester avec et sans set x to 1 end test test() get x --sans 'global x' --> Erreur: La variable x n’est pas définie. --avec 'global x'--> 1 [/SCRIPT] A+ -- Daniel