Preference fichier init

Codes specifiques à Windows
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Preference fichier init

Message 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))
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Preference fichier init

Message 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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Preference fichier init

Message par hub73 »

Merci Kwai chang caine cela fonctionne parfaitement. Je cherchais une solution depuis des heures !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Preference fichier init

Message 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:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre