Home

Tutorial AppleScript Studio

Partie 7 - Sauvegarde des données (BackUp) -

Etape 1 - Exporter dans un fichier texte

Sous Léopard - xCode 3.0

Nous allons faire une sauvegarde de nos données dans un fichier texte tabulé.

Chaque rangée de la data source sera une ligne du fichier texte terminé par un CR (Carriage Return, code ASCII character 13).

Chaque donnée dans la ligne sera séparée par un TAB (Tabulation, code ASCII character 9).


leNom Tab laDescription Tab LaDate Tab LePrix CR


Nous allons traiter dans l'ordre :

  1. Stockage des données en cours dans la p-list avant sauvegarde.
  2. Création d'une liste de toutes les données à partir de la data source.
  3. Ligne par ligne ajout des Tab et du CR de fin de ligne.
  4. Demande dans quel fichier sauvegarder.
  5. Ecriture du fichier de sauvegarde.


Stockage des données en cours dans la p-list avant sauvegarde

Important pour avoir une synchronisation des données entre data source, p-list et BackUp du fichier texte.

Ce fait simplement par l'appel de la subroutine stockerAllNotesInPlist.




Création d'une liste de toutes les données à partir de la data source

set ListeDeToutesLesNotes to content of contents of notesDataSource as list


Notez bien, il faut content of contents of . Si vous mettez que contents of vous obtenez l'adresse. Et attention au "s" à contents .




Ligne par ligne ajout des Tab et du CR de fin de ligne

En premier, connaître le nombre de lignes.


set NbLines to (count of ListeDeToutesLesNotes )


Puis faire la repeat.


repeat with i from 1 to NbLines


set une_ligne_record to item i of ListeDeToutesLesNotes


Les données sont récupérées sous forme de record pour être indépendant de leur position dans la ligne. Rappel, un record c'est le couple nom-valeur.


-- Une ligne "record" --> {|Col5|:"c5", |Col6|:"c6", |Date|:date "mercredi 6 décembre 2006 0:00:00", |Prix|:29, |Description|:"FTP", |Name|:"Transmit"}

Pour chaque donnée, nous ajoutons le Tab.


set leNom to |Name | of une_ligne_record & tab


Sauf la dernière donnée où il faut un CR.


set LaCol6 to |Col6 | of une_ligne_record & return


Maintenant, construisons la ligne entière texte.


set lineWithTab to leNom & laDescription & laDate & lePrix & laCol5 & LaCol6


Et enfin, cumulons les lignes dans une variable.


set dataFichierFinal to dataFichierFinal & lineWithTab


Nos données, stockées dans une liste, sont prétes à être écrite dans le fichier.

Notons que cette méthode, la plus simple à programmer, peut être consommatrice en page virtuelle, si vous avez beaucoup de données. Jusqu'à un millier de lignes, c'est peu sensible. Au-delà, il est probablement mieux d'écrire dans le fichier sorti ligne par ligne.



Demande dans quel fichier sauvegarder

La commande display save panel est prévue pour obtenir le chemin d'accès au fichier choisi.


set nomPropose to "MonLogiciel BackUp ladate"

set leResultat to display save panel in directory "MonLogiciel" with file name nomPropose


in directory et file name sont optionnels, mais bien pratiques.



Il faut tester si la commande c'est bien passée ou terminée par un "Cancel".


if leResultat is 1 then -- SAVE = 1, CANCEL = 0


set leNomDuFichier to POSIX file (path name of save panel) as string


C'est la transformation du chemin d'accès du format POSIX en alias.




Ecriture du fichier de sauvegarde

Ouverture du fichier.


set monFichierExport to open for access file leNomDuFichier with write permission



Mettre le marqueur de fin de fichier à zéro ce qui "efface" le contenu, si le fichier existe déjà.


set eof of monFichierExport to 0



Ecriture du fichier.


write dataFichierFinal to monFichierExport


Fermeture du fichier.


close access monFichierExport



Ne pas oublier, en cas de difficulté logiciel, de mettre cette séquence dans un try... on error...end try.



Le code complet


image image
Menu Léopard - Photo 10 et 12






La suite - Importer à partir d'un fichier texte tabulé


Page précédente

Page suivante


Merci de votre visite


UP