2009-07-03 6 views
1

Développement d'un projet Je me rends compte que j'ai besoin d'un certain niveau de persistance entre les sessions, par exemple lorsqu'un utilisateur exécute l'application, modifie certaines préférences puis ferme l'application. La prochaine fois que l'utilisateur exécute l'application, que ce soit après un redémarrage ou 15 minutes, j'aimerais pouvoir conserver les préférences qui ont été modifiées.Windows Application Programming & wxPython

Ma question concerne cette persistance. Que ce soit la programmation d'une application en utilisant l'API Win32 ou le Framework MFC .. ou en utilisant les nouveaux outils pour les langages de plus haut niveau tels que wxPython ou wxRuby, comment maintenir le type de persistance auquel je me réfère? Est-ce fait comme un fichier temporaire écrit sur le disque? Est-il enregistré dans un paramètre de registre? Y a-t-il une autre couche dans laquelle je ne suis pas au courant?

Répondre

3

Je vous conseille de le faire en deux étapes.

  1. La première étape consiste à enregistrer vos préférences. sous forme de chaîne , pour que vous puissiez

    a) Utiliser une lib xml ou xml de sortie par main à chaîne de sortie et de lire similaire à partir de la chaîne

    b) il suffit d'utiliser le module de cornichon pour vider votre prefs objet comme une chaîne

    c) Générer d'une manière ou d'une autre une chaîne à partir de prefs que vous pouvez lire comme prefs par exemple Utilisez yaml, config, JSON, etc. JSON est une bonne option quand simplejson le rend si facile.

  2. Une fois que vous avez vos méthodes pour convertir en provenance et à chaîne sont prêts, il vous suffit de le stocker dans un endroit où il est conservé et vous pouvez lire la prochaine fois, pour que vous puissiez

    a) Utiliser WX .Config qui enregistrer à registre dans Windows et à d'autres endroits en fonction de la plate-forme de sorte que vous n'avez pas à vous soucier où il enregistre, vous pouvez simplement lire les valeurs de manière indépendante de la plate-forme. Mais si vous le souhaitez, vous pouvez simplement utiliser wx.Config pour enregistrer directement les préférences de lecture.

    b) Sauvegardez directement les préférences. chaîne vers un fichier dans un dossier attribué par OS à votre application, par ex. dossier de données de l'application dans Windows.

Profitez de sauver une chaîne et que l'utilisation wx.Config pour le sauver, est que vous pouvez facilement changer où les données sont enregistrées dans l'avenir par exemple à l'avenir s'il y a un besoin de télécharger des préférences. vous pouvez simplement télécharger des préférences. chaîne.

+0

Merci, très concis et détaillé. L'objet de configuration me permet de stocker les données de manière sécurisée sans avoir à se soucier des fichiers ou de l'endroit où les stocker ou quoi que ce soit. De cette façon, j'ai une interface OO et tout le reste est géré. –

+0

+1 à JSON - J'ai fait beaucoup d'applications Windows et j'ai trouvé qu'un simple fichier json dans le dossier AppData était parfait. Extrêmement flexible, facile pour les travailleurs de support, intégré à partir de Python 2.6, tout simplement parfait. Aussi n'a pas souffert de problèmes de corruption aléatoires comme le décapage fait, aussi plus facile pour le débogage. – Henry

1

Il existe différentes méthodes pour cela qui ont évolué au fil des ans.

Ces méthodes comprennent (sans s'y limiter):

  1. entrées de registre.
  2. Fichiers INI.
  3. XML Fichiers
  4. fichiers binaires/texte simple
  5. Bases de données

De nos jours, la plupart des gens font ce genre de chose avec les fichiers XML résidant dans les dossiers AppData spécifiques de l'utilisateur. C'est votre choix comment vous le faites. Par exemple, pour des choses simples, les bases de données peuvent être surdimensionnées et pour les objets persistants énormes, le registre ne serait pas approprié. Vous devez voir ce que vous faites et le faire en conséquence.

Here is a very good discussion sur ce sujet

+0

Nous vous remercions de vos suggestions. En fin de compte, la configuration est la plus logique. Je peux l'interfacer au sein du programme et il prend soin de lui-même. Pas de fichiers à s'inquiéter. –