SAUVEGARDE DES PARAMETRES DE VOTRE APPLICATION

cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021 - 18 janv. 2006 à 18:48
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 - 15 févr. 2006 à 14:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35633-sauvegarde-des-parametres-de-votre-application

elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
15 févr. 2006 à 14:49
Tout a fait d'accord, mais çà çà fera partie d'un autre code :-)

Merci, @+
DeltaFX Messages postés 449 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 8 avril 2009 2
6 févr. 2006 à 16:09
Toujours faire gaffe à ce qu'il y ai un installeur/desinstalleur digne de ce nom avec ce genre de pratique, histoire de pas pourrir la base de registre quand on vire le prog, ou du moins que les clefs crées soient clairement listées dans un ReadMeFirst, ou une doc ou quoi que ce soit.

Sinon c'est le sook garantit.

C'est pas parce que 80% des progs commerciaux ne nettoient pas la base de registre( des cochoncetés qu'ils ont apportés) lors de la desinstallation qu'on doit faire pareil.
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
25 janv. 2006 à 12:40
Merci beaucoup Delphiprog.

Je ferai les modifs dès que j'aurai le temps.

Par contre pour l'histoire du "C'est le dernier qui utilisera SauvegardeParametres qui aura raison." celà dépend du contexte car c'est au depart juste pour garder le dernière etat d'une l'application dans une session donnée.

D'ailleur tu remarquera que j'ai utiliser la clé HKEY_CURRENT_USER et non HKEY_LOCAL_MACHINE, pour que les paramètres soient unique a chaque session de Windows, mais après on se fou de savoir qui va avoir droit a tel paramètre, çà sera a géré au niveau applicatif si on veut faire une appli qui gere plusieurs utilisateurs. non ? Mais je ferai des modifs pour rendre çà plus claire et plus portable ! :)

En tout cas merci pour les conseils je n'y avait pas pensé !!

++
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
22 janv. 2006 à 15:23
Un petit conseil : tu devrais interdire les instances multiples et appliquer le design pattern Singleton sur ce genre de classe.
Imagine :
- que tu partages ce magnifique code, dont tu es très fier, avec des collègues
- que chacun de ces collègues ait envie ou besoin d'instancier ta classe
Que se passe-t-il alors ?
C'est le dernier qui utilisera SauvegardeParametres qui aura raison.
Donc, le premier qui utilisera RestaureParametres aura la surprise de constater que les paramètres de l'appli ne sont pas ceux qu'il a sauvegardés.
C'est le genre d'erreur difficile à détecter au premier coup d'oeil.
Voir le code source de MHI sur ce site : http://tinyurl.com/dakww

D'autre part, pour ne pas que chacun aille modifier, dans le code source, le chemin par défaut et donc modifier la constante REG_KEY, au lieu de déclarer une constante, tu devrais passer une chaine en argument à ton constructeur.

Enfin, au lieu de spécifier des objets aussi précis que TEdit, TComboBox, TListBox et TCheckListBox, tu peux indiquer des types tels que TCustomEdit, TCustomComboBox, TCustomListBox et TCustomCheckListBox. De cette façon, tu ouvres des possibilités aux composants créés à partir de ces classes.

Sinon, on trouve quelques portions de code dupliqué. Ce serait bien, pour faciliter la maintenance, de rassembler ces portions au sein de méthodes déclarées en section private par exemple.

Le meilleur pour la fin : félicitations.
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
19 janv. 2006 à 11:09
Tout à fait ... ( où avais je la tête ).

Merci bcp pour cette remarque pertinante :-)

Damien.
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
18 janv. 2006 à 18:48
Tu peux faire :

procedure RestaureParametres;
begin
// On crée l'objet
with TRegistre.Create do
begin
Try
LireCle( 'CheckCle', CheckBox1 );
LireCle( 'EditCle', Edit1 );
LireCle( 'ComboCle', ComboBox1 );
LireListe( REG_KEY_LISTBOX, ListBox1 );
LireListe( REG_KEY_CHECKLISTBOX, CheckListBox1 );
finally
Free;
end;
end;
end;

Idem un peut partout...

Bon Coding....

ManChesTer.
Rejoignez-nous