Champ non "enregistrable"
Publié : 03.04.2005 - 23h21 par cameleon
Bonjour
Soit une appli. standalone et un champ vide au départ mais qui se remplit de texte dans le déroulement de scripts...
Si on quitte l'appli. pour la réouvrir ensuite, ce fameux champ est redevenu vide...
C'est possible ça ? Ou plutôt comment obtenir l'inverse ?
Publié : 04.04.2005 - 20h21 par Jérôme Rosat
Sous quelle plateforme ? Car dans la documentation de Revolution, il est précisé qu'une application ne peut pas se sauvegarder elle-même, sauf sous Mac.
Il faut enregistrer les données du champ dans un fichier externe et les charger au démarrage.
Publié : 04.04.2005 - 20h52 par cameleon
Bonjour
Je destine cette appli. en OS X à tous en libre téléchargement et en Windaube pour une personne proche...
Je développe en OS X avec la version 2.5.1, et j'ai vu le problème sur les deux plateformes...
Le script pour Quitter inclut la commande "save this stack", et même sur Mac, le contenu du champ n'est pas gardé.
Je vais chercher dans la doc...
A quel niveau la doc mentionne t'elle ce truc que j'appelle une anerie ?
( je ne suis pas expert du tout en anglais et j'utilise Revolution depuis peu en amateur... l'existence de ce forum en langue française prouve le besoin d'infos en français)
Publié : 05.04.2005 - 21h32 par Jérôme Rosat
Bonjour,
Dans la partie "Dictionary", dans la définition de la commande "save" il est précisé "You cannot save to a standalone application's file; standalones are read-only". Traduction: il n'est pas possible de sauvegarder une application. Il est cependant possible de modifier une pile et de la sauvegarder depuis une application dans un fichier séparé, mais pas l'application elle-même. Il est possible aussi de sauvegarder les informations dans un fichier texte.
En effet, selon la doc:
How do I store preferences or data for a standalone application?
A standalone application cannot save changes to itself, so you store preferences or data for a standalone application by saving the data in a separate file. There are two ways to save data:
* Use a stack to store and display the data, and use the save command to save the stack in a file. This approach is best if your application is based on working with documents: the saved stack file becomes your document. You re-open the stack with the go command.
* Put the data in a file using the file's URL as a container (or use commands such as write to file and export to save the data), then read the data from these files when your application starts up. This approach is best if the data you want to save consists of settings or similar data.
En ce qui concerne la différence entre les plateformes, je ne retrouve plus la source de l'information. Oublie donc !
Meilleurs messages.
Publié : 05.04.2005 - 22h27 par cameleon
Merci bien
J'ai cherché sur la mailing-list de revolution... et j'ai trouvé aussi l'info...
Ça fonctionne.
Dans cette liste, j'ai trouvé aussi une astuce pour récupérer le "file path" - utile dans les commandes "open file ...", "read from file ..." et "write ... to file" - d'un fichier "sauvegarde de données" qui serait placé dans le même dossier que l'appli standalone : "the effective filename".
Et on récupère le chemin par :
set itemdelimiter to "/"
get item 1 to -2 of the effective filename of this stack
Bon mac
Publié : 18.04.2005 - 15h07 par Krynn
cameleon a écrit :Merci bien
J'ai cherché sur la mailing-list de revolution... et j'ai trouvé aussi l'info...
Ça fonctionne.
Dans cette liste, j'ai trouvé aussi une astuce pour récupérer le "file path" - utile dans les commandes "open file ...", "read from file ..." et "write ... to file" - d'un fichier "sauvegarde de données" qui serait placé dans le même dossier que l'appli standalone : "the effective filename".
Et on récupère le chemin par :
set itemdelimiter to "/"
get item 1 to -2 of the effective filename of this stack
Bon mac
exacte, mais fait attention encore au fait que sur le Mac le fichier est placé dans l'application (afficher le contenu du progiciel) alors que sur PC, c'est directement dans le meme dossier.
j'ai fait un post ici
http://forum.cuk.ch/viewtopic.php?t=1504
avec une bidouille pour que la structure soie identique.
a toi de voir si ca t'interresse.
Publié : 18.04.2005 - 20h05 par cameleon
Bonjour
En fait, au lieu d'utiliser un fichier de type "txt" pour sauver les scores de mon petit jeu de Mahjong - utilisation qui réclame les commandes "open file...", "write..." pour sauver en quittant et "read..." pour récupérer en ouvrant - j'ai préféré utiliser une pile contenant une seule carte et un seul champ... Cette pile étant placée, en temps que "Data", au même niveau que l'appli.
L'écriture des scores contenu dans l'appli. à sa fermeture s'effectue juste par :
-- récup. chemin d'accès dans ScoresFile
set itemdelimiter to "/"
put item 1 to -2 of the effective filename of this stack into StackPath
put StackPath & "/shangcam.sc" into ScoresFile
-- ecriture scores dans la pile shangcam.sc
put (fld Classement of cd classmnt) into fld 1 of cd 1 of stack (ScoresFile)
save stack (ScoresFile)
La lecture des scores pour ré-écriture dans l'appli. à son ouverture :
-- récup. chemin d'accès dans ScoresFile
set itemdelimiter to "/"
put item 1 to -2 of the effective filename of this stack into StackPath
put StackPath & "/shangcam.sc" into ScoresFile
-- ecriture scores dans l'appli
put (fld Score of cd 1 of stack ScoresFile) into fld Classement of cd classmnt
Ça fonctionne aussi bien en win qu'en OSX, même si l'appli est un paquet, en OSX.
Publié : 20.04.2005 - 20h24 par Jérôme Rosat
cameleon a écrit :En fait, au lieu d'utiliser un fichier de type "txt" pour sauver les scores de mon petit jeu de Mahjong - utilisation qui réclame les commandes "open file...", "write..." pour sauver en quittant et "read..." pour récupérer en ouvrant - j'ai préféré utiliser une pile contenant une seule carte et un seul champ... Cette pile étant placée, en temps que "Data", au même niveau que l'appli.
Bonjour,
Il y a une autre solution vraiment simple:
Lecture du score:
put URL "file:scores.txt" into fld Classement of cd classmnt
Ecriture du score:
put fld Classement of cd classmnt into URL "file:scores.txt"
Voilà !