[Main]
Country=Ukraine
City=Kiev
[PrivateInfo]
Age=21
Name=Dima
INI files
Какие в .NET существуют средства для работы с .ini файлами ?
первый ответ
Цитата:
...INI files are not supported in .NET.
а я так надеялся :mad: ....
прийдется API юзать ...
Test.ini лежит в папке с исходниками
Код:
Код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
namespace IniTest
{
class Program
{
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
public static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, byte[] lpReturnedString, int nSize, string lpFileName);
static void Main(string[] args)
{
char space = ' ';
string returnStr = new String(space,1);
string sectionName = "PrivateInfo";
string keyName = "Name";
string defaultStr = "";
string ret = new String(space,100);
int Size = ret.Length;
FileInfo iniFile = new FileInfo(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent.Parent.FullName + @"\Test.ini");
if(iniFile.Exists)
{
returnStr = GetFromIniFile(sectionName, keyName, defaultStr, Size, iniFile.FullName);
}
else
{
Console.WriteLine("INI file doesn't exist");
}
Console.WriteLine(returnStr);
}
private static string GetFromIniFile(string sectionName, string keyName, string defaultStr, int Size, string fileName)
{
int result;
byte[] new_ret = new byte[Size];
ASCIIEncoding oAscii = new ASCIIEncoding();
result = GetPrivateProfileString(sectionName, keyName, defaultStr, new_ret, Size, fileName);
string returnStr = oAscii.GetString(new_ret, 0, result);
returnStr.Trim();
return returnStr;
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
namespace IniTest
{
class Program
{
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
public static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, byte[] lpReturnedString, int nSize, string lpFileName);
static void Main(string[] args)
{
char space = ' ';
string returnStr = new String(space,1);
string sectionName = "PrivateInfo";
string keyName = "Name";
string defaultStr = "";
string ret = new String(space,100);
int Size = ret.Length;
FileInfo iniFile = new FileInfo(new DirectoryInfo(Directory.GetCurrentDirectory()).Parent.Parent.FullName + @"\Test.ini");
if(iniFile.Exists)
{
returnStr = GetFromIniFile(sectionName, keyName, defaultStr, Size, iniFile.FullName);
}
else
{
Console.WriteLine("INI file doesn't exist");
}
Console.WriteLine(returnStr);
}
private static string GetFromIniFile(string sectionName, string keyName, string defaultStr, int Size, string fileName)
{
int result;
byte[] new_ret = new byte[Size];
ASCIIEncoding oAscii = new ASCIIEncoding();
result = GetPrivateProfileString(sectionName, keyName, defaultStr, new_ret, Size, fileName);
string returnStr = oAscii.GetString(new_ret, 0, result);
returnStr.Trim();
return returnStr;
}
}
}
Если недо - ну руками парсить. Или поискать какойнить парсер для них. Наверняка есть. На http://www.cpodeproject.com хотябы.
Ну от меня ничего не зависит, приложение уже написано и шлет баг репорты автоматически с .ini файлом, по которому нужно будет попределять продукт и еще кучу всячины, через API функцию все ОК
Это почему же ini-файлы рудимент? Иной раз намного эффективнее того же xml, который пихают где надо и не надо.
http://www.codeproject.com/KB/cs/readwritexmlini.aspx
Неплохая библиотека, сам юзаю и пока не жалуюсь...
Неплохая библиотека, сам юзаю и пока не жалуюсь...