Deux méthodes pour sauvegarder les paramètres d'une application.
■ La méthode traditionnelle utilisant la bibliothéque Preference.
http://www.purebasic.com/french/documen ... FileName.s = GetCurrentDirectory() + "Preferences.prefs"
;Définaition des paramétres
ApplicationName.s = "Test"
Version.s = "1.00"
WindowX = 100
WindowY = 100
WindowW = 800
WindowH = 400
;-Sauvegarde des paramétres
If CreatePreferences(GetTemporaryDirectory()+"Preferences.prefs")
WritePreferenceString("ApplicationName", ApplicationName)
WritePreferenceString("Version", Version)
WritePreferenceLong ("WindowX", WindowX)
WritePreferenceLong ("WindowY", WindowY)
WritePreferenceFloat("WindowW", WindowZ)
WritePreferenceFloat("WindowH", WindowH)
ClosePreferences()
EndIf
;-Lecture de la configuration
If OpenPreferences(GetTemporaryDirectory()+"Preferences.prefs")
ApplicationName.s = ReadPreferenceString("ApplicationName", "")
Version.s = ReadPreferenceString("Version", "")
WindowX = ReadPreferenceLong ("WindowX", 0)
WindowY = ReadPreferenceLong ("WindowY", 0)
WindowW = ReadPreferenceFloat("WindowW", 0)
WindowH = ReadPreferenceFloat("WindowH", 0)
ClosePreferences()
EndIf
;Controle
Debug ApplicationName.s
Debug Version
Debug WindowX
Debug WindowY
Debug WindowW
Debug WindowH[/code]
■ La méthode utilisant la bibliothéque JSON
http://www.purebasic.com/french/documen ... ]#JSONFile = 0
FileName.s = GetCurrentDirectory() + "Preferences.prefs"
Structure Param
ApplicationName.s
Version.s
WindowX.i
WindowY.i
WindowW.i
WindowH.i
EndStructure
Setup.Param
;Définaition des paramétres
With Setup
\ApplicationName.s = "Test"
\Version.s = "1.00"
\WindowX = 100
\WindowY = 100
\WindowW = 800
\WindowH = 400
EndWith
;-Sauvegarde des paramétres
CreateJSON(#JSONFile)
InsertJSONStructure(JSONValue(#JSONFile), @Setup, Param)
SaveJSON(#JSONFile, FileName, #PB_JSON_PrettyPrint)
;-Lecture de la configuration
LoadJSON(#JSONFile, FileName, #PB_JSON_NoCase)
ExtractJSONStructure(JSONValue(#JSONFile), @Setup, Param)
;Controle
With Setup
Debug \ApplicationName.s
Debug \Version
Debug \WindowX
Debug \WindowY
Debug \WindowW
Debug \WindowH
EndWith
[/code]
Enregistrer ces deux codes dans un dossier.
J'ai une préférence pour la méthode JSON que je trouve plus sexy.
JSON ou Preference ?
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
JSON ou Preference ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: JSON ou Preference ?
C'est vrai que plus les données à sauvées seront consequentes, plus le Json sera intéressant (niveau place).
Par contre je trouve que le débutant aura plus d'affinités avec la lib preferences().
Je trouve assez austère pour le néophyte. Surtout qu'il faut qu'il ait des notions de structures et pointeurs.
Par contre je trouve que le débutant aura plus d'affinités avec la lib preferences().
Je trouve
Code : Tout sélectionner
InsertJSONStructure(JSONValue(#JSONFile), @Setup, Param)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: JSON ou Preference ?
La méthode JSON (ou XML, car il existe la meme fonction pour le XML) a l'avantage de ne plus avoir à se soucier du code de sauvegarde si on ajoute des champs dans la structure (avec les prefs il faut manuellement ajouter le Read/WritePreference() correspondant aux nouveaux champs). De plus si la structure contient des objets complexes (list, tableaux, maps) ils seront recursivement sauvegardés. Les prefs ont l'avantage d’être un format facile à éditer à la main et "connu" (c'est des .ini).
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: JSON ou Preference ?
Pour le débutantAr-S a écrit :Par contre je trouve que le débutant aura plus d'affinités avec la lib preferences().
http://www.purebasic.fr/french/viewtopi ... 21&t=14511
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: JSON ou Preference ?
Merci, c'est super intéressant !
Je ne connaissais pas ce format Json, mais on peut même s'en servir en tant que format de fichier (par exemple si on crée une application pour sauvegarder notre document!)
La méthode Json est vraiment intéressante car on ne doit pas tout noter à la main lors de la sauvegarde.
Je ne connaissais pas ce format Json, mais on peut même s'en servir en tant que format de fichier (par exemple si on crée une application pour sauvegarder notre document!)
La méthode Json est vraiment intéressante car on ne doit pas tout noter à la main lors de la sauvegarde.
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: JSON ou Preference ?
Exactementblendman a écrit :La méthode Json est vraiment intéressante car on ne doit pas tout noter à la main lors de la sauvegarde.
Tu peux sauvegarder des tableaux, des maps ou liste chaînées complexes comme un contexte de jeu par exemple. Tu peux changer ensuite la structure sans que ça soit destructeur de données.
Tu peux aussi te servir de JSON pour une liste de contacts par exemple.
Une fois que tu as enregistré plusieurs noms, ajoute un champ supplémentaire : Par exemple son adresse.
Relance le code et tu verras que tu n'as pas perdu tes contacts précédents.
http://www.purebasic.fr/french/viewtopi ... =6&t=15202
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%