LES INI EN VB.NET

cs_666Ange Messages postés 19 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 mars 2009 - 19 août 2003 à 17:46
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
5 janv. 2009 à 19:59
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
23 juin 2008 à 00:18
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
19 juin 2008 à 22:07
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
19 juin 2008 à 18:07
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
25 juin 2007 à 14:31
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 3
25 juin 2007 à 13:27
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
25 juin 2007 à 11:01
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
19 mai 2005 à 13:40
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 3
16 mai 2005 à 17:30
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 !
Utilisateur anonyme
16 mai 2005 à 14:43
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.
Utilisateur anonyme
16 mai 2005 à 14:08
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 3
10 mai 2005 à 00:53
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
19 févr. 2005 à 11:38
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
16 févr. 2005 à 21:02
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
2 févr. 2005 à 11:55
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
2 févr. 2005 à 09:17
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
1 févr. 2005 à 17:05
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
23 janv. 2005 à 13:38
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
21 janv. 2005 à 18:27
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
21 janv. 2005 à 17:23
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
20 janv. 2005 à 14:41
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
16 nov. 2004 à 08:56
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
14 oct. 2004 à 10:51
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
19 août 2004 à 14:50
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
5 mars 2004 à 23:48
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
2 nov. 2003 à 05:24
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
23 oct. 2003 à 07:52
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
3 oct. 2003 à 19:57
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
3 oct. 2003 à 15:59
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
19 août 2003 à 17:46
merci, j'en avais que pour vb6
Rejoignez-nous