Page 1 sur 1

Preference fichier init

Publié : ven. 20/août/2021 17:12
par hub73
Bonjour à vous. Je n'arrive pas à résoudre un bug dans cette portion de code. Je souhaite enregistrer des valeurs dans un fichier ini, puis les récupérer ensuite dans le programme (au prochaine lancement). Et bien non, mon message 'Zut' apparaît et les données ini se sont pas lues et attribuées aux variables.

Merci à vous pour votre aide.

Code : Tout sélectionner

EnableExplicit

#LARGEUR_FENETRE = 1170
#HAUTEUR_FENETRE = 590

Global gLargeurEcran
Global gHauteurEcran

Global gFini

Global gPosWindowX
Global gPosWindowY

Global gChemin_general_donnees$
Global gNom_fichier_programmation$
Global gbLancerFichierAuDemarrage 
Global gbFichierDemarre
 
Global gDirectManuelTitre$
Global gDirectManuelPersonnes$
Global gDirectManuelCommentaire$

Global gTemps_lancement_fichier_demarrage


Procedure Charger_preferences()
  
  Protected Nom$
  Protected Valeur$
  Protected Fichier$ 
  
  Protected Result
  Protected Defaut$
  
  Protected x,y
  
  x = (gLargeurEcran - #LARGEUR_FENETRE) / 2
  y = (gHauteurEcran - #HAUTEUR_FENETRE) / 2
  
  ; cette Procedure ne fonctionne pas et ne retrouve pas la valeur dans le fichier ini !
  
  Fichier$ = GetPathPart(ProgramFilename()) + "config2.ini"
  
  Result = OpenPreferences(Fichier$)
  
  If Result = 0
    MessageRequester ("Zut mais pourquoi result est-il égal à zéro !!!!", Fichier$)
  EndIf
  
  Defaut$ = GetUserDirectory(#PB_Directory_Documents) + "radio\"
  
  PreferenceGroup("Parametres")
  gChemin_general_donnees$ = ReadPreferenceString ("Chemin_general_donnees", Defaut$)
  gNom_fichier_programmation$ = ReadPreferenceString ("Fichier_programmation", "toto.prg")
  gbLancerFichierAuDemarrage = ReadPreferenceInteger ("Lancer_fichier_programmation_au_demarrage", #True)
  gDirectManuelTitre$ = ReadPreferenceString ("DirectManuelTitre","")
  gDirectManuelPersonnes$ = ReadPreferenceString ("DirectManuelPersonnes","")
  gDirectManuelCommentaire$ = ReadPreferenceString ("DirectManuelCommentaire","")
  gPosWindowX = ReadPreferenceInteger ("PosWindowX", x)
  gPosWindowY = ReadPreferenceInteger ("PosWindowY", y)
  ClosePreferences()  
  
EndProcedure
  
 Procedure Initialiser_preferences()
   
  Protected Fichier$ 
  Protected x,y
  
  x = (gLargeurEcran - #LARGEUR_FENETRE) / 2
  y = (gHauteurEcran - #HAUTEUR_FENETRE) / 2
   
  Fichier$ = GetPathPart(ProgramFilename()) + "config2.ini"
   
  If ReadFile(0, Fichier$) = 0   
  
    CreatePreferences(Fichier$)
    
    gChemin_general_donnees$ = GetUserDirectory(#PB_Directory_Documents) + "radio\"
    
    PreferenceGroup("Parametres")
    WritePreferenceString("Chemin_general_donnees", gChemin_general_donnees$) 
    WritePreferenceString("Fichier_programmation", gNom_fichier_programmation$)
    WritePreferenceInteger("Lancer_fichier_programmation_au_demarrage", gbLancerFichierAuDemarrage)
    WritePreferenceString("DirectManuelTitre", gDirectManuelTitre$) 
    WritePreferenceString("DirectManuelPersonnes", gDirectManuelPersonnes$)
    WritePreferenceString("DirectManuelCommentaire", gDirectManuelCommentaire$) 
    WritePreferenceInteger ("PosWindowX", gPosWindowX)
    WritePreferenceInteger ("PosWindowY", gPosWindowY)
    ClosePreferences()  
    
  Else
    
    Charger_preferences()
    
  EndIf
  
EndProcedure

Procedure Enregistrer_preferences()
  
  CreatePreferences(GetPathPart(ProgramFilename()) + "config2.ini")
  
  gPosWindowX = 200
  gPosWindowY = 200
  
  PreferenceGroup("Parametres")
  WritePreferenceString("Chemin_general_donnees", gChemin_general_donnees$) 
  WritePreferenceString("Fichier_programmation", gNom_fichier_programmation$)
  WritePreferenceInteger("Lancer_fichier_programmation_au_demarrage", gbLancerFichierAuDemarrage)
  WritePreferenceString("DirectManuelTitre", gDirectManuelTitre$) 
  WritePreferenceString("DirectManuelPersonnes", gDirectManuelPersonnes$)
  WritePreferenceString("DirectManuelCommentaire", gDirectManuelCommentaire$) 
  WritePreferenceInteger ("PosWindowX", gPosWindowX)
  WritePreferenceInteger ("PosWindowY", gPosWindowY)
  
  ClosePreferences()  
    
EndProcedure

Procedure Test_initialisation_donnees()
 
gChemin_general_donnees$  = "c:\chemin\"
gNom_fichier_programmation$ = "MonProgramme.prg"
gbLancerFichierAuDemarrage = 1
gDirectManuelTitre$ = "Mon titre"
gDirectManuelPersonnes$ = "Moi"
gDirectManuelCommentaire$ = "Mon commentaire" 
gPosWindowX = 400
gPosWindowY = 400


EndProcedure

Test_initialisation_donnees()
Enregistrer_preferences()

Initialiser_preferences()

Debug "Chemin_general_donnees : "+ gChemin_general_donnees$ 
Debug "Fichier_programmation : "+ gNom_fichier_programmation$
Debug "Lancer_fichier_programmation_au_demarrage : " + gbLancerFichierAuDemarrage
Debug "DirectManuelTitre : "+ gDirectManuelTitre$ 
Debug "DirectManuelPersonnes : "+ gDirectManuelPersonnes$
Debug "DirectManuelCommentaire : " + gDirectManuelCommentaire$ 
Debug "PosWindowX : "+ Str( gPosWindowX)
Debug "PosWindowY : " + Str(gPosWindowY)

MessageRequester ("info","Chemin_general_donnees : "+ gChemin_general_donnees$ )
MessageRequester ("info", "Fichier_programmation : "+ gNom_fichier_programmation$)
MessageRequester ("info", "Lancer_fichier_programmation_au_demarrage : " + gbLancerFichierAuDemarrage)
MessageRequester ("info", "DirectManuelTitre : "+ gDirectManuelTitre$ )
MessageRequester ("info", "DirectManuelPersonnes : "+ gDirectManuelPersonnes$)
MessageRequester ("info", "DirectManuelCommentaire : " + gDirectManuelCommentaire$) 
MessageRequester ("info", "PosWindowX : "+ Str( gPosWindowX))
MessageRequester ("info", "PosWindowY : " + Str(gPosWindowY))

Re: Preference fichier init

Publié : ven. 20/août/2021 19:05
par Kwai chang caine
Bonjour et bienvenu dans la famille :wink:

Si tu ouvres un fichier, tu dois le refermer avant de tenter une nouvelle ouverture, sauf si il est en "Shared" :wink:
Peut être ça marchera mieux comme ça

Code : Tout sélectionner

If ReadFile(0, Fichier$) = 0   
  
    CreatePreferences(Fichier$)
    
    gChemin_general_donnees$ = GetUserDirectory(#PB_Directory_Documents) + "radio\"
    
    PreferenceGroup("Parametres")
    WritePreferenceString("Chemin_general_donnees", gChemin_general_donnees$) 
    WritePreferenceString("Fichier_programmation", gNom_fichier_programmation$)
    WritePreferenceInteger("Lancer_fichier_programmation_au_demarrage", gbLancerFichierAuDemarrage)
    WritePreferenceString("DirectManuelTitre", gDirectManuelTitre$) 
    WritePreferenceString("DirectManuelPersonnes", gDirectManuelPersonnes$)
    WritePreferenceString("DirectManuelCommentaire", gDirectManuelCommentaire$) 
    WritePreferenceInteger ("PosWindowX", gPosWindowX)
    WritePreferenceInteger ("PosWindowY", gPosWindowY)
    ClosePreferences()  
    
  Else
    
    CloseFile(0)
    Charger_preferences()
    
  EndIf

Re: Preference fichier init

Publié : ven. 20/août/2021 19:25
par hub73
Merci Kwai chang caine cela fonctionne parfaitement. Je cherchais une solution depuis des heures !

Re: Preference fichier init

Publié : mer. 25/août/2021 16:39
par Kwai chang caine
C'est souvent les choses les plus simples qui nous bloquent le plus, à force de lire et relire le même code :?
D'ou l'utilité des forums avec le regard neuf d'autrui, content de t'avoir dépanné :wink: