LES INI EN VB.NET

Messages postés
19
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
2 mars 2009
- - Dernière réponse : dgreg60
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
6 août 2015
- 5 janv. 2009 à 19:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7709-les-ini-en-vb-net

dgreg60
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
6 août 2015
-
Salut,

Merci pour cette source : Claire, efficace et bien commenté.

Je me suis permis de la compiler en DLL en passant en paramètre le non du fichier INI.

Je publis la sources de la DLL.

Encore une fois merci,
LimDulLeNecromancien
Messages postés
6
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2008
-
Merci beaucoup.
Cela fonctionne parfaitement et j'ai même pu adapter le truc pour pouvoir faire une application multi-langues avec des fichiers de langue .lng forgé comme des fichiers .ini

Merci
Merci.
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
Tu ne trouves pas de boucle dans ce programme et c'est normal, car il utilise des API Windows.
En fait, les boucles se trouvent dans une classe complilée (kernel32.dll). Cette classe compiliée contient des méthodes dont GetPrivateProfileStringA pour la lecture par exemple.(pour plus d'informations : http://msdn.microsoft.com/fr-fr/library/ms724353(en-us,VS.85).aspx)
Ce dont tu as besoin pour utiliser ce programme.
Insère le programme dans un nouveau module nommé ModINI.

Pour écrire dans un fichier INI :
Call EcrireINI("Menu", "Option", "1")

Cela va créer un fichier "Backup.ini" à la racine de ton projet contenant :
>>>> BOF <<<<
[Menu]
Option=1
>>>> EOF <<<<

Pour lire la valeur :
MsgBox LireINI("Menu", "Option") 'Affiche 1

Pour lire les en-têtes de section :
Dim tableau As ArrayList
tableau = SectionsINI()
MsgBox tableau(0) 'Affiche Menu

Pour supprimer une variable :
Call SupprimeINI("Menu", "Option")

Pour supprimer une section :
Call SupprimeINI("Menu")
LimDulLeNecromancien
Messages postés
6
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2008
-
Bonjour.

Je débute totalement en programmation VB
(je code un peut en php)

J'ai quelques questions.
Tout d'abord où dois-je insérer ce module dans on programme ?

Ensuite, je ne parviens pas à comprendre ce que fait chaque ligne en détail.
Ca serai trop long je pense qu'on m'explique terme par terme mais je bloque sur un truc.

Je ne vois pas de boucle.

Comment dans un ini de plusieurs lignes contenant plusieurs paramètres ce programme fonctionne ?
Comment transforme-t-il une ligne dans le genre:
nom_du_parametre=valeur
en une variable nommée nom_du_parametre et ayant la valeur du ini ?
Et cela pour chaque ligne du fichier ini ?
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
J'avais moi aussi fait ma petite version avec la possibilité de changer d'ini selon mes besoins.
Pour le app.settings c'est vrai que je n'avais pas encore fait attention au fait qu'il était présent en vb mais il faut dire que j'ai vraiment ralenti mes déveleppements en se moment par manque de temps.
Lucyberad
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
2 -
bon, je suis depuis passé au app.settings (et au C#) :D

mais c vrai que la simplicité des ini les rends accesbiles facielement au débutants (surtout en vb)
rockman18
Messages postés
2
Date d'inscription
samedi 13 mai 2006
Statut
Membre
Dernière intervention
12 février 2007
-
D'accord ce code a 2 ans mais je le trouve encore d'actualité car il m'a été grandement utile pour un ptit developpement perso. Sinon j'ai fait 2-3 modif surtout pour pouvoir à l'appel de la fonction choisir le Fichier ini à utiliser (mon prog à besoin de 3 fichiers ini différents).

Merci beaucoup SupraDolph.
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
Désolé Lucyberad de répondre un peu tardivement...
Je ne suis pas encore passé en VB 2005 mais pour le problème que tu a rencontré sur les fonctions EcrireINI et SuprimmeINI c'est entièrement de ma faute (de débutant :( ) en effet lorsque j'ai écrit se bout de code je n'avais pas très bien saisi la différence entre "sub" et "function", un "sub" ne permet pas de renvoyer des paramètres contrairement à "function".
Donc pour EcrireINI et SuprimmeINI tu remplace "function" par "sub" ou même par "public sub" pour être plus précis.
Voili voilou, bonne prog à tous !
SupraDolph.
Lucyberad
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
2 -
merci pour tes infos JJdai, j'ai compris la necessité de MAX_ENTRY et mon probleme etait en fait que j'utilisais VB2005 express en beta 1.
En effet je me suis procuré visual 2005 en version complete beta 2 et le probleme n'est plus revenu (ainsi que plein d'autres au passage).
Sinon au passage je sais comment faire du vb6 sous .net meme si je n'ai que fait du .net principalement
ma vie de programmeur: (merde! y remets ca lol)
j'ai debuter sous vba, j'ai fait 3 ligne pas plus ca m'as vite soulé, j'ai pris vb6 j'ai touché 3 bouton en fesant un rpogramme avec un minimun de code (tout le reste en concepteur lol)
et maintenant je me lance dans le .net a fond !
voila pour la petite histoire, afin de dire que vb.net as un avantage certain au niveau du comfort du programmeur et il faut quitter les routine vb6 SAUF quand ils nous mettent des app.config a la mormoilmeu !
(oula je vien a peine de me rendre compte que je m'emportait lol)
@+
L U C Y I3 E R @ D

p.s: merci pour votre soutien a tous !
JJDai
Messages postés
291
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
13 mars 2015
-
Pour LucyBerad, le "as ???" qu'il faut ajouter vient d'une option propre a DotNet. Dans les propriétés du projet, "propriés communes-> génération" si l'option "Strict " est à "On", on est en pur dotNet, et donc il refuse une déclaration non typée du genre:
function toto()
Il faut écrire:
function toto() as long 'par exemple

Par contre si cette option est à "Off" il accepte la permissivité de VB6 et accepte une déclaration non type qui sera implicitement de type variant.
Je ne maitrise pas encore DotNet, mais il est surement plus propre je pense de mettre cette option à "on" et d'oublier définitement les mauvaises habitudes de VB6 (quand on en avait, je parle pour moi !!!). Mais il est vrai que de la laisser à "Off" permet un passage à DotNet un peu plus en douceur, mais attention au surprise.
JJDai
Messages postés
291
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
13 mars 2015
-
max_entry = 32768, c'est la taille maximum que peut avoir un fichier INI. En réalité c'est le double, mais certains editeurs de texte sont limité à 32768 octets et tronque le fichier (BlocNote notamment, sauf erreur), ce qui peut être dangereux.
Il est rare qu'un fichier INI atteigne cette taille, mais si on le détourne de sa fonction première comme moi, pour y stocker des petits volumes de données, genre listes de référence, parametage de grille, ... on y arrive rapidement.
Ce qui m'ennuie dans cette source, qui par ailleurs est excellente, c'est l'utilisation des API dont je pensais me débérrasser avec DotNet. Et bin non, je cherchais en vain l'espace de nom qui gérait les frichiers INI, que neni, y en a pas.
Merci encore.
Lucyberad
Messages postés
414
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
26 juillet 2007
2 -
Salut, deja j'aimerais remercier supradolph pour nous offrir une version .net des .ini
seulement j'ai 2-3 truc qui me gêne:
j'ai en ma possession vb.net 2003 architect et vb.net 2005 (beta1 que je vais bientot faire passer a la 2)
j'ai le probleme suivant: sous vs 2003 le code est bien reconnu, sous vb 2005 il me demande de rajouter un "as quelquechose" apres les function EcrireINI et SuprimmeINI
j'ai pas ce probleme sou vs 2003 (une reeur ou une correction du langage par microsoft?)

2eme probleme venant de ma part cette fois, j'ai pas trop compris ce qu'est max_entry
merci de m'eclairer la dessus...

sinon c'est une source qui a l'air prometteuse.
je vous souhaite bonne prog a tous.
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
Salut jdva, encore merçi pour tes encouragements :)
Avec le AppSetting, on peut lire des valeurs mais on ne peut pas en écrire, ou du moins je n'est pas réussit
cs_jdva
Messages postés
1
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
16 février 2005
-
SUPER, bravo.
Comme d'autres je suis débutant et je n'arrivait pas lire/écrire un fichier INI, jusqu'à ce que je découvre ton code.
Merci
J'ai essayé avec AppSettings, mais sans succès (pour le moment...)
cs_niluje
Messages postés
90
Date d'inscription
mardi 2 avril 2002
Statut
Membre
Dernière intervention
2 décembre 2004
-
Salut,

merci pr ta source ;) je vais te la noter ca va pas trainer ... :D

Par contre je rencontre un pb (non pas avec ton code)
J'ai dans mon fichier ini dans une section un nombre aléatoire de paramètres. Comment est ce que je pourrait les récupérer ?
Via une bouble while j'imagine mais je ne vois pas avec quelle instruction ...

voila si kkun à une idée :)
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
Merci pour ton commentaire merline,
J'avai bien essayer d'utiliser les fichiers xml sans grand succès je réessayerai de faire comme tu vien de le dire.

++
-----------------------
SupraDolph
cs_merline
Messages postés
22
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
25 juillet 2003
-
Saviez-vous que l'un des avantages de vb.net est de ne plus avoir besoin de fichier ini ?
Il suffit maintenant d'ajouter un fichier app.config à votre projet avec par exemple le chemin de la base de données ainsi :
<?xml version="1.0" encoding="utf-8"?>
<configuration>



</configuration>

Pour le rappeller ensuite :
Private Shared CheminBase As String = System.Configuration.ConfigurationSettings.AppSettings.Get("CheminBase")

Celà permet de ne pas avoir de fichier qui se balade sur le disque avec tous les pbs que celà engendre...
Enfin c t juste une info au passage... Ton code est malgré tout très bien mais n'est en fait plus très nécessaire.

Ciao
35jmb35
Messages postés
3
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
23 janvier 2005
-
Pour ma part, j'ai mis cela dans un module. Par contre, j'utilise SharpDevelop comme IDE. Cela me permet de développer en VB.net et C# gratuitement. Pour plus d'info, http://plasserre.developpez.com/v1-dbis.htm
Autre info, j'ai rajouté le chemin du fichier en paramètre de toutes les fonctions. Exemple :
Function SectionsINI(ByVal Fichier As String) As System.Collections.ArrayList
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
Je trouve bizard que vous ayer renconté des problèmes.
Toutefois j'ai peut être une idée.
Je pense que vous avez mis la source dans une forme et non dans un module, il me semble que les imports implicites sont différent.
Merci de me le confirmer.
Et merci 35jmb35 pour les solutions que tu apportées et qui aiderons peut-êtres d'autres personnes.
35jmb35
Messages postés
3
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
23 janvier 2005
-
J'ai trouvé la solution à mon problème, il suffit de rajouter "Imports Microsoft.VisualBasic".

Une autre solution semble être de rajouter "System.Collections." ou "Microsoft.VisualBasic." devant les items en question. Par exemples :

Function SectionsINI() As System.Collections.ArrayList
ou
Microsoft.VisualBasic.vbNullString
35jmb35
Messages postés
3
Date d'inscription
mercredi 19 janvier 2005
Statut
Membre
Dernière intervention
23 janvier 2005
-
Tout d'abord, je préviens tout de suite, je suis débutant sur VB.net. Ce qui suis est donc peut-être complètement stupide.

J'ai eu le même problème que Freeman88. Pour réglé cela, j'ai du rajouter "Imports System.Collections ".
Par contre, j'ai aussi un problème avec "vbNullString" et "ControlChars.NullChar" qui sont en erreur lors de la compilation : Name is not déclared !!!
Merci à SupraDolph pour ce source et merci d'avance à tous pour votre aide.
Data2004
Messages postés
16
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 janvier 2005
-
Merci pour ton code. Il est réussi et bien commenté.
Il va m'être bien utile !
EvilGost
Messages postés
235
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 mai 2011
2 -
oui, excellent :)
maintenant que l'on commence vraiment à passer en VB.Net, il est très utile de trouver les sources que l'on avait en VB6 en .Net car il n'est pas simple de passer de l'évènementiel à l'objet :)
merci à toi :)
anisenit
Messages postés
2
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
10 janvier 2005
-
merci pour ton code, je suis vraiment interressé de savoir de plus à propos des utilisations VB.NET, je suis encore debutant...
neotrunk
Messages postés
1
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
5 mars 2004
-
En un mot : SUPERBE !!!

Pas un seul tuto ne donne réellement la méthode pour VB .Net...
Dromax
Messages postés
40
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
23 septembre 2005
-
merci je cherchais ça desesperemment pour .Net

SUPER !!!
cs_gaston19
Messages postés
1
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
23 octobre 2003
-
Merci pour ton code, je connaissais l'autre version et je trouve tes explications plus claires. Continue ... !
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
Freeman88 arraylist fait partie de vb.net je ne comprend pas pourquoi sur ta version se serai différant.
Merci de ton commentaire sa fai toujours plaisir de savoir que ses sources sont utiles et faciles a utilisée.
Freeman88
Messages postés
1
Date d'inscription
mercredi 3 septembre 2003
Statut
Membre
Dernière intervention
3 octobre 2003
-
Merci pour ton code, qui m a bien aidé, seul code que j'ai reussi à faire fonctionner pour vb.net; seul bémol dans la fonction SectionsINI(), ArrayList est un type indéfini par .net, je suppose que ca correspond à un de tes types!! Cool en tout cas!!
cs_666Ange
Messages postés
19
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
2 mars 2009
-
merci, j'en avais que pour vb6