Page 1 sur 1

[resolu] Soucis avec ExaminePreferenceGroups()

Publié : dim. 22/févr./2009 21:15
par Ar-S
Salut,

J'ai un soucis avec les fonctions preferences, en fait avec PreferenceGroupName() plus exactement.

Logiquement, le code suivant devrait débogguer le nom du groupe [MONGROUPE] mais il laisse des champs vides. Pourtant ExaminePreferenceGroups() renvoie bien 1.


Code : Tout sélectionner

Global Group$,testPref,ExamineGroup,pref1$,pref2$
Global DefPath$=GetCurrentDirectory()
Global nomfichier$="test.ini"
Global fichier$=DefPath$+nomfichier$

Debut:
testPref=OpenPreferences(fichier$)
If testPref<>0
  ExamineGroup = ExaminePreferenceGroups()
  Debug ExamineGroup
  Group$ = PreferenceGroupName()
  Debug "nom du groupe : "+Group$
  PreferenceGroup(Group$)
  pref1$=ReadPreferenceString("01", "")
  pref2$=ReadPreferenceString("02", "")
  Debug "Pref 1 : "+pref1$
  Debug "Pref 2 : "+pref2$
  ClosePreferences()
Else
  CreateFile(0,fichier$)
  WriteStringN(0,"[MONGROUPE]")
  WriteStringN(0,"01 = tata")
  WriteStringN(0,"02 = toto")
  CloseFile(0)
  Goto Debut ;Maintenant que le fichier ini est créé on re-test
EndIf


Publié : lun. 23/févr./2009 12:55
par Patrick88
je pense qu'il vaut mieux utiliser les fonctions d'écriture des préférences plutot que vouloir les crées avec des writestring

pat

Publié : lun. 23/févr./2009 14:40
par Ar-S
Patrick88 a écrit :je pense qu'il vaut mieux utiliser les fonctions d'écriture des préférences plutot que vouloir les crées avec des writestring

pat
C'est pour l'exemple Patrick, tu peux toi même créer ton fichier txt si tu le veux, le problème persiste. Moi je voudrais seulement comprendre pourquoi ça ne fonctionne pas, ça fait très "bug" comme symptôme.

Publié : lun. 23/févr./2009 16:01
par SpaceMan
salut Ar-s !
comme le disait Patrick88 le problème pourrait vienir du fait que tu mélanges les commandes. je ne pense pas que WriteStringN(0,"[MONGROUPE]") puisse remplacer PrefrenceGroupe("MONGROUPE") 8O ! tu n'as pas donnée un nom explicite à PrefrenceGroupe du genre PrefrenceGroupe("MONGROUPE") et par conséquent, la chaine est vide c'est vide ! ce qui fait qu'à la lecture avec debug une chaine vide s'affiche si je ne me trompe...

Publié : lun. 23/févr./2009 16:37
par Ar-S
Je maintiens que ça n'a rien a voir avec writestring.
Essaye de créer toi même un fichier texte (fichier$) contenant
[CEQUETUVEUX]
01 = test
02 = moutarde
ensuite

Code : Tout sélectionner

testPref=OpenPreferences(fichier$)
If testPref<>0
  ExamineGroup = ExaminePreferenceGroups()
  Debug ExamineGroup
  Group$ = PreferenceGroupName()
  Debug "nom du groupe : "+Group$
  PreferenceGroup(Group$)
  pref1$=ReadPreferenceString("01", "")
  pref2$=ReadPreferenceString("02", "")
  Debug "Pref 1 : "+pref1$
  Debug "Pref 2 : "+pref2$
  ClosePreferences() 
endif
ExamineGroup = ExaminePreferenceGroups()
Group$ = PreferenceGroupName()

On devrait logiquement se retrouver avec [CEQUETUVEUX] dans Group$.

Je m'en suis sorti autrement pour mon programme perso ultra top secret ;) mais il n'empêche que je trouve vraiment bizarre que le code ci dessus chie.

Publié : lun. 23/févr./2009 19:49
par zaphod
Salut,

J'ai corrigé et je pense que ca marche :

Code : Tout sélectionner

Global Group$,testPref,ExamineGroup,pref1$,pref2$ 
Global DefPath$=GetCurrentDirectory() 
Global nomfichier$="test.ini" 
Global fichier$=DefPath$+nomfichier$ 

Debut: 
testPref=OpenPreferences(fichier$) 
If testPref<>0 
  ExamineGroup = ExaminePreferenceGroups() 
  Debug ExamineGroup 
  ;zaphod
  NextPreferenceGroup()
  ;
  Group$ = PreferenceGroupName() 
  Debug "nom du groupe : "+Group$ 
  PreferenceGroup(Group$) 
  pref1$=ReadPreferenceString("01", "") 
  pref2$=ReadPreferenceString("02", "") 
  Debug "Pref 1 : "+pref1$ 
  Debug "Pref 2 : "+pref2$ 
  ClosePreferences() 
Else 
  CreateFile(0,fichier$) 
  WriteStringN(0,"[MONGROUPE]") 
  WriteStringN(0,"01 = tata") 
  WriteStringN(0,"02 = toto") 
  CloseFile(0) 
  Goto Debut ;Maintenant que le fichier ini est créé on re-test 
EndIf 
Z@ph0d//

Publié : lun. 23/févr./2009 21:05
par Ar-S
Ok, nikel Zaphod,
manquait donc le NextPreferenceGroup(), chose que je trouve des plus étrange. Pourquoi devoir inscrire NextPreferenceGroup() alors qu'il ni a qu'un groupe ?...

En fait la notice dit
Récupère les informations concernant le groupe suivant de l'énumération commencée (par) ExaminePreferenceGroups().
il faut donc bien utiliser NextPreferenceGroup() même si l'on a qu'un groupe.
Je trouve ça parfaitement illogique. :wink: ça vient du fait que j'ai traduit littéralement la commande "Groupe suivant des préférences" du coup pour moi ça commençait au groupe 2.

En tout cas merci.

Publié : mar. 24/févr./2009 0:26
par Guimauve
Les commandes ExaminePreferenceGroups() et NextPreferenceGroup() permettent de faire un truc du genre :

Code : Tout sélectionner

Global Group$,testPref,ExamineGroup,pref1$,pref2$
Global DefPath$=GetCurrentDirectory()
Global nomfichier$="test.ini"
Global fichier$=DefPath$+nomfichier$

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; C'est juste pour tester la commande
; on créer un fichier et on écrase la
; vieille version s'il y en a une.
; Guimauve

If CreateFile(0,fichier$)
  WriteStringN(0,"[MONGROUPE]")
  WriteStringN(0,"01 = tata")
  WriteStringN(0,"02 = toto")
  
  WriteStringN(0,"[PATATE]")
  WriteStringN(0,"01 = POILS")
  WriteStringN(0,"02 = MAUDIT")
  
  CloseFile(0)
  
EndIf 



If OpenPreferences(fichier$) <> 0
  
  If ExaminePreferenceGroups()
    
    While NextPreferenceGroup()
      
      Group$ = PreferenceGroupName()
      Debug "nom du groupe : "+Group$
      PreferenceGroup(Group$)
      pref1$=ReadPreferenceString("01", "")
      pref2$=ReadPreferenceString("02", "")
      Debug "Pref 1 : "+pref1$
      Debug "Pref 2 : "+pref2$
      Debug ""
      
    Wend
    
    ClosePreferences()
    
  EndIf
  
EndIf 
A+
Guimauve

Publié : mar. 24/févr./2009 16:08
par Ar-S
Et oui Guimauve merci, c'est exactement ce que j'ai fait (While NextPreferenceGroup()....) dans mon soft pour mettre à jour des buttonGadget reprenant les groupes d'un fichier pref, j'ai inscrit dans une liste le nom de ces groupes pour qu'ils s'inscrivent dans mes buttongadget 10,11,12,13....

C'est trés pratique.
(..)

Code : Tout sélectionner

While NextPreferenceGroup()
Group$ = PreferenceGroupName()
AddElement(GroupListe()) 
GroupListe() = Group$
SetGadgetText(10+NumGroup,GroupListe())
NumGroup=NumGroup+1
Debug GroupListe()
Wend
(..)