begin process at 2010 02 10 08:56:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CLASSE DE GESTION DE FICHIERS INI

CLASSE DE GESTION DE FICHIERS INI


 Information sur la source

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Source .NET ( DotNet ) Classé sous :fichiers ini, gestion, GetPrivateProfileString, WritePrivateProfileString Niveau :Débutant Date de création :04/06/2008 Date de mise à jour :04/06/2008 16:38:53 Vu :5 034

Auteur : FreeZeBiT

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Oui, j'ai pu constater sur le net que pas mal de monde se sert encore et toujours des fichiers INI, qui, je suis d'accord, reste un support très simple et efficace pour conserver des données notamment de paramétrage...
On peut trouver quelques sources permettant de lire dans des fichiers INI, mais peu permettent de les gérer entièrement ; voici une classe que j'ai faîte, en partant d'un bout de code trouvé sur le net, que j'ai bien étoffé :

Source

  • using System;
  • using System.Runtime.InteropServices;
  • using System.Text;
  • namespace MonEspaceDeNom
  • {
  • /// <summary>
  • /// Classe permettant de gérer les fichiers INI.
  • /// </summary>
  • public class Ini
  • {
  • // API Windows
  • [DllImport("kernel32")]
  • private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
  • [DllImport("kernel32")]
  • private static extern int GetPrivateProfileSection(string section, IntPtr lpReturnedString, int nSize, string lpFileName);
  • [DllImport("kernel32")]
  • private static extern int GetPrivateProfileSectionNames(IntPtr lpszReturnBuffer, int nSize, string lpFileName);
  • [DllImport("kernel32")]
  • private static extern int WritePrivateProfileSection(string section, string lpString, string lpFileName);
  • [DllImport("kernel32")]
  • private static extern int WritePrivateProfileString(string section, string key, string lpString, string lpFileName);
  • private string m_pfileName;
  • /// <summary>
  • /// Obtient ou définit le chemin d'accès complet au fichier INI.
  • /// </summary>
  • public string Filename
  • {
  • get { return m_pfileName; }
  • set { m_pfileName = value; }
  • }
  • /// <summary>
  • /// Initialize une instance de <see cref="Ini"/>.
  • /// </summary>
  • /// <param name="lpFileName">Chemin d'accès complet au fichier INI.</param>
  • public Ini(string lpFileName)
  • {
  • this.m_pfileName = lpFileName;
  • }
  • /// <summary>
  • /// Supprime une section ainsi que toutes les valeurs qu'elle contient.
  • /// </summary>
  • /// <param name="section">Nom de la section.</param>
  • public int RemoveSection(string section)
  • {
  • return WritePrivateProfileSection(section, null, m_pfileName);
  • }
  • /// <summary>
  • /// Supprime une valeur.
  • /// </summary>
  • /// <param name="section">Nom de la section.</param>
  • /// <param name="key">Nom de la valeur.</param>
  • public int RemoveString(string section, string key)
  • {
  • return WritePrivateProfileString(section, key, null, m_pfileName);
  • }
  • /// <summary>
  • /// Ecrit une valeur dans une section.
  • /// </summary>
  • /// <param name="section">Nom de la section.</param>
  • /// <param name="key">Nom de la valeur.</param>
  • /// <param name="lpString">Valeur.</param>
  • public int WriteString(string section, string key, string lpString)
  • {
  • return WritePrivateProfileString(section, key, lpString, m_pfileName);
  • }
  • /// <summary>
  • /// Obtient la valeur d'une section.
  • /// </summary>
  • /// <param name="section">Nom de la section.</param>
  • /// <param name="key">Nom de la valeur.</param>
  • public string ReadString(string section, string key)
  • {
  • const int bufferSize = 255;
  • StringBuilder temp = new StringBuilder(bufferSize);
  • GetPrivateProfileString(section, key, "", temp, bufferSize, m_pfileName);
  • return temp.ToString();
  • }
  • /// <summary>
  • /// Obtient l'ensemble des valeurs d'une section.
  • /// </summary>
  • /// <param name="section">Nom de la section.</param>
  • public string[] ReadSection(string section)
  • {
  • const int bufferSize = 2048;
  • StringBuilder returnedString = new StringBuilder();
  • IntPtr pReturnedString = Marshal.AllocCoTaskMem(bufferSize);
  • try
  • {
  • int bytesReturned = GetPrivateProfileSection(section, pReturnedString, bufferSize, m_pfileName);
  • // bytesReturned -1 pour retirer le dernier \0
  • for( int i = 0; i < bytesReturned-1; i++ )
  • returnedString.Append((char)Marshal.ReadByte(new IntPtr((uint)pReturnedString + (uint)i)));
  • }
  • finally
  • {
  • Marshal.FreeCoTaskMem(pReturnedString);
  • }
  • string sectionData = returnedString.ToString();
  • return sectionData.Split('\0');
  • }
  • /// <summary>
  • /// Obtient le nom de toutes les sections.
  • /// </summary>
  • public string[] ReadSections()
  • {
  • const int bufferSize = 2048;
  • StringBuilder returnedString = new StringBuilder();
  • IntPtr pReturnedString = Marshal.AllocCoTaskMem(bufferSize);
  • try
  • {
  • int bytesReturned = GetPrivateProfileSectionNames(pReturnedString, bufferSize, m_pfileName);
  • // bytesReturned -1 pour retirer le dernier \0
  • for( int i = 0; i < bytesReturned-1; i++ )
  • returnedString.Append((char)Marshal.ReadByte(new IntPtr((uint)pReturnedString + (uint)i)));
  • }
  • finally
  • {
  • Marshal.FreeCoTaskMem(pReturnedString);
  • }
  • string sectionData = returnedString.ToString();
  • return sectionData.Split('\0');
  • }
  • }
  • }
using System;
using System.Runtime.InteropServices;
using System.Text;

namespace MonEspaceDeNom
{
	/// <summary>
	/// Classe permettant de gérer les fichiers INI.
	/// </summary>
	public class Ini
	{
		// API Windows
		[DllImport("kernel32")]
		private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
    
		[DllImport("kernel32")]
		private static extern int GetPrivateProfileSection(string section, IntPtr lpReturnedString, int nSize, string lpFileName);

		[DllImport("kernel32")]
		private static extern int GetPrivateProfileSectionNames(IntPtr lpszReturnBuffer, int nSize, string lpFileName);

		[DllImport("kernel32")]
		private static extern int WritePrivateProfileSection(string section, string lpString, string lpFileName);

		[DllImport("kernel32")]
		private static extern int WritePrivateProfileString(string section, string key, string lpString, string lpFileName);

		private string m_pfileName;

		/// <summary>
		/// Obtient ou définit le chemin d'accès complet au fichier INI.
		/// </summary>
		public string Filename
		{
			get { return m_pfileName; }
			set { m_pfileName = value; }
		}
        
		/// <summary>
		/// Initialize une instance de <see cref="Ini"/>.
		/// </summary>
		/// <param name="lpFileName">Chemin d'accès complet au fichier INI.</param>
		public Ini(string lpFileName)
		{
			this.m_pfileName = lpFileName;
		}

		/// <summary>
		/// Supprime une section ainsi que toutes les valeurs qu'elle contient.
		/// </summary>
		/// <param name="section">Nom de la section.</param>
		public int RemoveSection(string section)
		{
			return WritePrivateProfileSection(section, null, m_pfileName);
		}

		/// <summary>
		/// Supprime une valeur.
		/// </summary>
		/// <param name="section">Nom de la section.</param>
		/// <param name="key">Nom de la valeur.</param>
		public int RemoveString(string section, string key)
		{
			return WritePrivateProfileString(section, key, null, m_pfileName);
		}

		/// <summary>
		/// Ecrit une valeur dans une section.
		/// </summary>
		/// <param name="section">Nom de la section.</param>
		/// <param name="key">Nom de la valeur.</param>
		/// <param name="lpString">Valeur.</param>
		public int WriteString(string section, string key, string lpString)
		{
			return WritePrivateProfileString(section, key, lpString, m_pfileName);
		}

		/// <summary>
		/// Obtient la valeur d'une section.
		/// </summary>
		/// <param name="section">Nom de la section.</param>
		/// <param name="key">Nom de la valeur.</param>
		public string ReadString(string section, string key)
		{
			const int bufferSize = 255;
			StringBuilder temp = new StringBuilder(bufferSize);
			GetPrivateProfileString(section, key, "", temp, bufferSize, m_pfileName);
			return temp.ToString();
		}

		/// <summary>
		/// Obtient l'ensemble des valeurs d'une section.
		/// </summary>
		/// <param name="section">Nom de la section.</param>
		public string[] ReadSection(string section)
		{
			const int bufferSize = 2048;

			StringBuilder returnedString = new StringBuilder();

			IntPtr pReturnedString = Marshal.AllocCoTaskMem(bufferSize);
			try
			{
				int bytesReturned = GetPrivateProfileSection(section, pReturnedString, bufferSize, m_pfileName);

				// bytesReturned -1 pour retirer le dernier \0
				for( int i = 0; i < bytesReturned-1; i++ )
					returnedString.Append((char)Marshal.ReadByte(new IntPtr((uint)pReturnedString + (uint)i)));
			}
			finally
			{
				Marshal.FreeCoTaskMem(pReturnedString);
			}

			string sectionData = returnedString.ToString();
			return sectionData.Split('\0');
		}

		/// <summary>
		/// Obtient le nom de toutes les sections.
		/// </summary>
		public string[] ReadSections()
		{
			const int bufferSize = 2048;

			StringBuilder returnedString = new StringBuilder();

			IntPtr pReturnedString = Marshal.AllocCoTaskMem(bufferSize);
			try
			{
				int bytesReturned = GetPrivateProfileSectionNames(pReturnedString, bufferSize, m_pfileName);

				// bytesReturned -1 pour retirer le dernier \0
				for( int i = 0; i < bytesReturned-1; i++ )
					returnedString.Append((char)Marshal.ReadByte(new IntPtr((uint)pReturnedString + (uint)i)));
			}
			finally
			{
				Marshal.FreeCoTaskMem(pReturnedString);
			}

			string sectionData = returnedString.ToString();
			return sectionData.Split('\0');
		}
	}
}



 Sources de la même categorie

Source avec une capture TOOLTIP TEXT POUR LA LISTE DÉROULANTE D'UN COMBOBOX par whismeril
Source avec Zip Source avec une capture Source .NET (Dotnet) LOGIN (XML) par DanMor498
Source .NET (Dotnet) WEBTESTPLUGIN - IGNORER DES URLS LORS D'UN TEST WEB VISUAL S... par jesusonline
Source avec Zip Source avec une capture Source .NET (Dotnet) EXERCICE DE CALCUL MENTAL par Sat7121
Source avec Zip Source avec une capture Source .NET (Dotnet) TRADUCTEUR ALGO VISUAL BASIC .NET/C# par rhonin33

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES LANGUES, COUNTRIES, CHAÎNES DE CARACTÈRE SIMPLE par gourky
Source avec Zip Source avec une capture Source .NET (Dotnet) SERVICES WINDOWS par thebestdrummer
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES SERVICES WINDOWS par boutemine
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION D'UN MAGASIN DE MEUBLES par angelz

Commentaires et avis

Commentaire de Buddies le 07/06/2008 12:48:25 9/10

merci :-)

Commentaire de winny68 le 10/06/2008 17:43:35 9/10

Elle est très bien. Mais peut-être une peu grosse pour les petites applications.

Cependant, c'est une super idée de la parager.

Commentaire de philoutte le 07/07/2008 09:04:59 9/10

Elle est vraiment bien (et m'a été fort utile ^^ )

Merci :)

Commentaire de giovaFR le 01/12/2008 16:10:18

Génial, c'est exactement ce que je cherchais ! pouvoir lister les sections/clées, et les éditer.

Merci !

PS : et oui des fois on a pas le choix, on doit travailler avec les .INI pour s'interfacer avec de vieux systemes. Merci encore !

Commentaire de petertoy1 le 01/12/2009 22:05:40 8/10

Super et génial!
Ton code permet de passer du C++ au c# très simplement
Pour un débutant en C#, cela m'a donné beaucoup d'idèes!
Merci beaucoup.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Gestion du déplacement du curseur d'une ScrollBar [ par wilhelmthie ] Comment faire la gestion du déplacement d'un curseur dans une H/VScrollBar sachent que le curseur est centré. Il serait aussi utile que la position ce gestion des DateTimePicker [ par wilhelmthie ] je voudrais afficher uniquement l'heure. Cela ne pose aucun soucis, mais comment cela ce fait qu'elle ne se met pas à jour? comment faut-il faire ?Mer Gestion des strings [ par zmc ] Bonsoir, j'aim commencé depuis quelques temps la création d'un petit scripter ASP.Net/PHP (dans le genre WebMatrix), seulement delphi me semble limité Gestion de l'espace mémoire [ par moontek ] Salut,donc je viens de faire une petite recherche sur le forum concernant la place en mémoire de certains programme C#, pour ma part mon programme pre gestion d'une liste de selection en javascript [ par cedre ] bonjour,est-il possible de supprimer un ou plusieurs éléments sélectionnés dans une liste de sélection exemple de récupération d'un élément sélectionn Recherche aide ou code pour gestion d'un Treeview [ par shadowgirl ] Salut à tous, Je cherche quelqu'un qui pourrait m'aider ou me passer du code pour gérer un Treeview, avec la classe Treeview. (Expand, selected ....) Execution et gestion de process distant [ par ceoph ] Bonjour,J'aimerais (en winform ou webform) pouvoir lancer un process (executable) avec des options sur une machine distante et la meme chose avec d'au [C#] Questions sur la compostion en projets [ par oberown ] Pour faire mon application qui est un jeu.j'ai un projet Graphisme, un autre Gestion.Gestion est un ensemble d'objet permettant de gerer le jeu.Comme Gestion de déconnexion entre un client et un webservice [ par syl2 ] Bonjour,Je suis en train de réaliser un WebService afin de pouvoir jouer au échec en réseau et à distance et je rencontre un problème pour effectuer l Gestion d'erreur du Framework [ par bucherb ] Hello!!Est-ce quelqu'un saurait comment arrêter l'interception automatique des erreurs du framework?J'ai une exception qui est lancée à un moment donn


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales