Aide concernant la gestion des fichiers ini

Signaler
Messages postés
9
Date d'inscription
dimanche 25 avril 2004
Statut
Membre
Dernière intervention
28 juillet 2005
-
Messages postés
9
Date d'inscription
dimanche 25 avril 2004
Statut
Membre
Dernière intervention
28 juillet 2005
-
Bonjour à tous :)

Bon voila j'ai besoin de vos lumières.
J'ai fais un ptit prog qui récupére un fichier sur As400 qui le convertis en PDF et qui ensuite envoi ce finchier converti à un destinataire par mail.

Jusque là tout va bien seulement j'ai mis l'adresse mail du correspondant en dur dans le prog ce qui ne se fais pas me direz vous. c'est justement là que j'ai besoin de votre aide.

Pour envoyer le mail j'utilise ça:
MAPIMessages1.RecipAddress = "le_mail_de_mon_destinataire"

Mais à la place je voudrais récuperer la valeur de l'adresse dans un fichier .ini
j'ai trouvé un module sur le site qui permet de le faire mais la ou ca cloche baaa c'est que ca marche pas ou alors c'est que je ne l'utilise pas comme il faut.

j'ai donc fais comme ceci:
MAPIMessages1.RecipAdress = modINI.INIRead("MonEntete", "MaVariable")

Avec comme fichier Ini ceci:
[MonEntete]
MaVariable=AdresseMail

voilà j'espere que j'ai ete assé clair et que vous pourez m'aider.
D'avance merci.

6 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Tout d'abord : il vaux mieux éviter de passer par des fichiers ini :
c'est un héritage des vieux systèmes 16 bits qui ne possèdaient pas de
base de registre, mais ca remonte à bien longtemps ! Maintenant, il
vaux mieux utiliser la base de registre : la plus planqué pour stocker
ses données, et surtout, les erreurs de manipulations sont moins
possibles (alors qu'il suffit de supprimer le fichier ini pour faire
planter le programme par exemple, supprimer la clé du registre demande
déjà plus de connaissances !)

Surtout qu'avec VB, il est très facile d'accèder au registre pour stocker ou lire une valeur !



Enfin bon, sinon, pour ton problème, sans le code du module, on peux
pas vraiment t'aider : est-ce que tu passer les bons paramètres, dans
le bon ordre ??? On ne peux pas savoir !

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
Messages postés
9
Date d'inscription
dimanche 25 avril 2004
Statut
Membre
Dernière intervention
28 juillet 2005

Voici le code du module que j'utilise
Si vous avez quelque chose de mieux je suis preneur (je debute en vb)

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long


Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long


Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias _
"WritePrivateProfileSectionA" ( _
ByVal lpAppName As String, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long


'Fonction pour lire une valeur dans un fichier INI
Function INIRead(Entete As String, Variable As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
INIRead = String(255, Chr(0))
INIRead = Left$(INIRead, GetPrivateProfileString(Entete, ByVal Variable, "", INIRead, Len(INIRead), fichier))
End Function


'Fonction pour écrire une valeur dans un fichier INI
'La section spécifiée est créée automatiquement si elle n'existe pas déjà
Function INIWrite(Entete As String, Variable As String, Valeur As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
EcrireINI = WritePrivateProfileString(Entete, Variable, Valeur, fichier)
End Function


'Fonction pour supprimer une valeur dans un fichier INI
Function INIDelete(Entete As String, Variable As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
SupprINI = WritePrivateProfileString(Entete, Variable, 0&, fichier)
End Function


'Fonction pour supprimer une section dans un fichier INI
Function INIDeleteSection(Entete As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
SupprSectionINI = WritePrivateProfileSection(Entete, 0&, fichier)
End Function

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long


Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long


Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias _
"WritePrivateProfileSectionA" ( _
ByVal lpAppName As String, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long


'Fonction pour lire une valeur dans un fichier INI
Function INIRead(Entete As String, Variable As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
INIRead = String(255, Chr(0))
INIRead = Left$(INIRead, GetPrivateProfileString(Entete, ByVal Variable, "", INIRead, Len(INIRead), fichier))
End Function


'Fonction pour écrire une valeur dans un fichier INI
'La section spécifiée est créée automatiquement si elle n'existe pas déjà
Function INIWrite(Entete As String, Variable As String, Valeur As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
EcrireINI = WritePrivateProfileString(Entete, Variable, Valeur, fichier)
End Function


'Fonction pour supprimer une valeur dans un fichier INI
Function INIDelete(Entete As String, Variable As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
SupprINI = WritePrivateProfileString(Entete, Variable, 0&, fichier)
End Function


'Fonction pour supprimer une section dans un fichier INI
Function INIDeleteSection(Entete As String, Optional fichier As String) As String fichier IIf(fichier "", App.Path & "" & App.EXEName & ".ini", fichier)
SupprSectionINI = WritePrivateProfileSection(Entete, 0&, fichier)
End Function
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Avec ce module, il te faut lui spécifier le nom du fichier en troisième
paramètre, sinon, il va automatiquement chercher dans le fichier "Nom
de l'application.ini" qui doit se trouver dans le dossier de
l'application, pas pratique donc !



Pour revenir sur l'histoire de la base de registre, VB intègre
directement des fonctions pour y accèder : SaveSetting et GetSetting
qui permettent de sauvegarder et de charger une valeur dans/à partir du
registre, sans avoir à s'ennuyer à créer des clés manuellement (VB le
fait tout seul comme un grand), ce qui est plus pratique que de devoir
passer par un fichier ini et un module approprié pour y accèder !

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
Messages postés
9
Date d'inscription
dimanche 25 avril 2004
Statut
Membre
Dernière intervention
28 juillet 2005

Oui mon fichier ini porte le meme nom que mon executable mais marche pas qq meme :(

Si non pour l'autre solution pourrais tu me donner un exemple d'utilisation ?
je c je suis chiant mais bon j' voudrais vraiement y arriver ( apres ca mon prog est bouclé lol)

en tt cas merci pour ton aide ;)
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Pour stocker une valeur :



SaveSettings App.EXEName, "Nouvelle Section", "Nouvelle clé", Valeur



Pour la récupèrer :



Valeur = GetSettings App.EXEName, "Nouvelle Section", "Nouvelle clé", "Valeur par défaut"

DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
Messages postés
9
Date d'inscription
dimanche 25 avril 2004
Statut
Membre
Dernière intervention
28 juillet 2005

Merci beaucoup je vais essayer avec ça. ;)