[resolu] Soucis avec ExaminePreferenceGroups()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu] Soucis avec ExaminePreferenceGroups()

Message 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

Dernière modification par Ar-S le lun. 23/févr./2009 21:06, modifié 1 fois.
~~~~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
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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.
~~~~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
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message 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...
Un défaut qui empêche les hommes d’agir, c’est de ne pas sentir de quoi ils sont capables.
Jacques Bénigne Bossuet
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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.
~~~~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
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Message 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//
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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.
~~~~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
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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
(..)
~~~~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
Répondre