A mellékelt példa két projektet tartalmaz, melyek egyike a konvertáló komponenst, a másik az azt felhasználó alkalmazást rejti. Lássuk a megvalósítás részleteit.
ICLibrary projekt
A komponens Convert metódus a végzi el a megadott INI állomány adatainak konvertálását XML állományba. Az INI és a generálandó XML állományok neveit az INIFile és az XMLFile property-kben kell megadni.
A konvertáláskor két API metódust is felhasználunk, mely egyike a GetPrivateProfileSectionNames metódus. Deklarációja a következő:

GetPrivateProfileSectionNames
Osztály:
int GetPrivateProfileSectionNames(
byte[] lpReturnedString,
int nSize,
string lpFileName
);
A metódus egy tömbben visszaadja a megadott INI állomány bejegyzéseinek nevét. Egy-egy bejegyzés a [] jelek között található.
Paraméterek
byte[] lpReturnedString
A tömb, mely a neveket tartalmazza.
int nSize
A tömb méretét megadó egész szám.
string lpFileName
A feldolgozandó INI állomány neve. Amennyiben ezt NULL értékre választjuk, akkor a metódus a Win.ini állományt keresi a Windows rendszermappájában.
Visszatérési érték
Amennyiben a művelet sikeres volt, az eredmény a tömbbe kiírt karakterek számát adja vissza.
A másik metódus a GetPrivateProfileSection, melynek deklarációja a következőképpen adható meg.

GetPrivateProfileSection
Osztály:
int GetPrivateProfileSection(
string lpAppName,
byte[]lpReturnedString,
intnSize,
stringlpFileName
)
A megadott INI állomány megadott szegmenséből adja vissza az összes kulcs-érték párt.
Paraméterek
string lpAppName
Itt kell megadni a szegmens nevét.
byte[]lpReturnedString
A tömb tartalmazza az eredményhalmazt.
intnSize
A tömb mérete.
stringlpFileName
A feldolgozandó INI állomány neve. Amennyiben ezt NULL értékre választjuk, akkor az állományt a metódus a Windows rendszermappájában keresi.
Visszatérési érték
Amennyiben a művelet sikeres volt, az eredmény a tömbbe kiírt karakterek számát adja vissza.
A metódusok menedzselt deklarációit a Win32 osztályban helyeztük el.
A Convert metódusban azzal indítunk, hogy generálunk egy XML állománynevet, amennyiben nem adtunk meg ilyet. Ezt az INI állomány nevéből és elérési útvonalából képezzük.
if (xmlfile.Length == 0)
{
xmlfile = Path.Combine(Path.GetDirectoryName(inifile),String.Format("{0}.xml", Path.GetFileNameWithoutExtension(inifile)));
}
Ezt követően kigyűjtjük a szegmensneveket az INI állományból. Ehhez egy FOR ciklusra van szükség, melyben meghívhatjuk a GetPrivateProfileSectionNames metódust.
for(max=BUFFER_SIZE/2,size=max;size!=0&&size>=(max-2);max*=2)
{
b = new byte[max];
size = Win32.GetPrivateProfileSectionNames(b,max,inifile);
}
Majd egy újabb ciklusban feldolgozzuk a GetPrivateProfileSection metódus meghívása után megkapott neveket és értékeket, beírjuk azokat az XML-be.
A művelet eredményeképpen előáll egy olyan XML, mely minden bejegyzés nevével nyit egy főcsomópontot, és egy-egy alcsomópont reprezentálja a bejegyzéseket névvel és értékkel. Ezeket a NAME és a VALUE attribútumokban helyeztük el.
Az alábbi INI bejegyzést találjuk az állomány elején:
[Main]
Version=1.0
Developer=Animare Software
Ennek XML-beli megvalósulása a következő:
<Section Name="Main">
<Setting Name="Version" Value="1.0" />
<Setting Name="Developer" Value="Animare Software" />
</Section>
ICClient projekt
Az alkalmazás Form-ján megtalálható TabControl első füle alatt elvégezhetjük a konverziót a szükséges adatok megadása után, majd az állományok tartalmát rögtön meg is nézhetjük a másik fül alatt található szövegmezőkben.
A komponens metódusának meghívása igen egyszerű, a következőképpen történik:
icComponent1.INIFile = textBox1.Text;
icComponent1.XMLFile = textBox2.Text;
if (icComponent1.Convert())
{
...