Satimage Précédent | Suivant
Comment surveiller le déroulement d'un script
Accueil Documentation Smile Les terminaux AppleScript Utilisation d'AppleScript Comment surveiller le déroulement d'un script  
Smile possède un certain nombre de commandes destinées à afficher des informations sur le déroulement d'un script. Ces commandes fonctionnnent aussi bien dans les fenêtres de texte que dans les fenêtres de script, les fenêtres d'édition de scripts compilés et d'applets.
log x
affiche le contenu de x dans la Console, sur une nouvelle ligne, et met la Console au premier plan. La Console s'ouvre automatiquement si nécessaire. Si x n'est pas une chaîne de caractères, log force la traduction en chaîne de caractères : log peut afficher des types complexes tels que dates, lists et records.
msg(x)
affiche le contenu de x dans la Console, sur une nouvelle ligne, et met la Console au premier plan. La Console s'ouvre automatiquement si nécessaire. Si x n'est pas une chaîne de caractères, msg utilise la traduction AppleScript standard en chaîne de caractères - qui peut échouer.
quietmsg(x)
équivalent à msg, mais la Console ne passe pas au premier plan.
postit x
affiche le contenu de x dans une fenêtre flottante intitulée Message. Si x n'est pas une chaîne de caractères, msg utilise la traduction AppleScript standard en chaîne de caractères - qui peut échouer. Pour fermer la fenêtre Message par un script, faire postit "".
display x
force la traduction de x en chaîne de caractères et renvoie le résultat (sans l'afficher). Associé aux commandes précédentes, display est très utile pour déboguer des variables AppleScript, des arrays of real ou des matrices.
Pour obliger la Console à se mettre à jour après une commande msg ou quietmsg (par exemple dans une boucle), insérez une instruction smilepause 0.
Exemple
L'exemple ci-dessous calcule le cumul des tailles de fichiers contenus dans un dossier donné. Le script suppose que the_folder contient une référence valide à un dossier. Il construit la liste des fichiers, qu'il affiche d'abord dans la Console. Il lance ensuite le traitement de chaque fichier : la fenêtre Message nous renseigne sur l'avancée du traitement en affichant un message tel que Fichier 2 sur 120, [le nom du fichier]/Tapez 'esc' pour interrompre. Si une erreur survient pour un fichier (ce qui pourrait arriver si notre script effectuait un traitement plus complexe), le script affiche dans la Console le nom du fichier suivi du message d'erreur, et met la Console au premier plan, de façon que l'utilisateur soit averti, puis passe au traitement du fichier suivant. Une fois tous les fichiers traités, le script ferme la fenêtre Message et affiche le résultat, d'une part dans une boîte de dialogue, et également dans la Console ce qui permet de le conserver.
postit ("Établissement de la liste des fichiers ...")
smilepause 0
set the_files to (list files the_folder)
quietmsg(display the_files)
set curr_index to 1
set total_size to 0
set files_count to (count the_files)
repeat with the_file in the_files
    set the_info to (info for the_file)
    set the_name to name of the_info
    postit "Fichier " & curr_index & " sur " & files_count & ", " & the_name & return & "Tapez 'esc' pour interrompre."
    smilepause 0
    try
        set total_size to total_size + (size of the_info)
    on error err_str
        quietmsg("Erreur pendant le traitement de " & the_name & " : " & err_str)
    end try
    set curr_index to 1 + curr_index
end repeat
postit ""
set the_msg to "Cumul des tailles : " & total_size div 1024 & " Koctets"
dd(the_msg)
return the_msg


Importer le script
English version
Copyright ©2008 Paris, Satimage