Le but est de sauvegarder dans une "mini base de données" des informations que votre application chargera à chaque lancement. Le fichier p-list référencé comme "user default", et géré automatiquement par ASS, sera cette mini-base de données.
Deux approches pour faire cela :
Nous allons, dans cette page, étudier cette deuxième option. Il va nous falloir apprendre pour cela à :
Attention : Le fichier en entrée doit être un fichier en TEXT pur, avec un CR (Carriage Return, code 13), et pas un LF (Line Feed, code 10). Exemple, avec le logiciel TextEdit, il faut sauver avec les options line Breaks Macintoch, Encoding Western (Mac OS Roman). Prenez garde à la provenance de votre fichier, Mac, PC, Unix, etc, qui gèrent différemment la fin de ligne.
Pour cet exemple, je vais utiliser en entrée le fichier que mon application Hypercard génère pour sauver les données. Son format est :
*Classic BkUp* en première ligne permet de vérifier que nous avons le bon fichier. Ensuite, il y a un auteur par ligne. La fin du bloc des auteurs est détecté par *endAuthor*.
Pour notre exemple nous traiterons que le premier bloc, soit le bloc auteur.
try
set monFichier to chooseFile() -- renvoi iMac:Users:alg:dossier:fichier sélectionné
open for access monFichier -- Le fichier doit exister
read monFichier before return -- lecture d'une ligne sans le Carriage Return
(traitement ici)
on error
display dialog "Erreur à l'ouverture du fichier"
close access monFichier -- Ne pas oublier de fermer
end try
on chooseFile() -- renvoi iMac:Users:alg:dossier sélectionné
set defaultFolder to getHomeSites() -- renvoi iMac:Users:alg:
set withInvisibles to false
set monFichier to (choose file with prompt "Choose Folder" default location defaultFolder without invisibles and multiple selections allowed)
return monFichier
end chooseFile ---------------------------------------------------
on getHomeSites() -- renvoi iMac:Users:alg:
set sitesPath to do shell script "echo $HOME/"
set sitesFolder to POSIX file sitesPath
return sitesFolder --as alias
end getHomeSites -----------------------------------------------
J'ai recopié, sans me poser de question le sous-programme getHomeSites, que Yvon Thoraval, un contributeur de la mailing liste AppleScript m'a expédié, car je n'ai pas encore appris comment faire des shell script. Qu'il en soit remercié pour l'aide qu'il apporte aux débutants sur cette mailing list.
Globalement, que fait getHomeSites. Il va rechercher le nom de votre disque dur, ajout le nom du catalogue "Users", qui est un nom standard, et en final ajoute le nom de votre dossier utilisateur. Pour moi c'est les initiales de mon nom "alg". Sachant que le nom de mon disque dur est "iMac". getHomeSites va renvoyer, pour ma configuration "iMac:Users:alg:", qui est la racine de mes dossiers personnels.
set monFichier to chooseFile()
Le sous-programme chooseFile appel getHomeSites, et ouvre la fenêtre habituelle de sélection des dossiers, et fichiers. Et la commande set place le résultat dans la variable monFichier pour son utilisation dans les différentes demandes de lecture du script.
open for access monFichier -- Le fichier doit exister
La commande open ouvre le fichier. Ceui-ci doit exister. Cette remarque est importante si vous voulez ne pas utiliser le sous-programme chooseFile qui vous garantie que le fichier existe, mais une affectation en dur du nom de fichier, comme :
set monFichier to alias "iMac:Users:alg:Classic:Classic2.3 BackUp"
J'utilise en dur, que pendant la mise au point pour gagner du temps. Mais attention, si le fichier n'existe pas. Applescript va le créer vide, et vous allez vous étonner de ne pas trouver vos données au test suivant.
Dernier point, toujours faire l'ouverture du fichier dans un Try ... on error .... end try. Car il faut toujours fermer le fichier sinon il n'est plus accessible.
Nous en savons assez pour gérer nos fichiers. Plus de détail sur le web. Ici, par exemple.