Accueil > > > CLASSE DE GESTION DE FICHIERS INI
CLASSE DE GESTION DE FICHIERS INI
Information sur la source
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
Commentaires et avis
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
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|