Здравствуйте. Возникла необходимость работать с ini файлом.
Естественно первая идея — импорт WritePrivateProfileString.
Накидал класс:
/// <summary>
/// Класс работы с ini-функциями
/// </summary>
public class IniFileManager
{
#region Private Member Declaration
/// <summary>
/// Путь к ini-файлу
/// </summary>
private String _iniFile = "";
#endregion
#region Dll Import
// Импорт функций
[DllImport("kernel32", SetLastError = true)]
private static extern long WritePrivateProfileInt(String Section, String Key, int Value, String FilePath);
[DllImport("kernel32", SetLastError = true)]
private static extern long WritePrivateProfileString(String Section, String Key, String Value, String FilePath);
[DllImport("kernel32", SetLastError = true)]
private static extern int GetPrivateProfileInt(String Section, String Key, int Default, String FilePath);
[DllImport("kernel32", SetLastError = true)]
private static extern int GetPrivateProfileString(String Section, String Key, String Default, StringBuilder retVal, int Size, String FilePath);
#endregion
#region Constructors
/// <summary>
/// Конструктор
/// </summary>
/// <param name="iniFile">Путь к файлу</param>
public IniFileManager(String iniFile)
{
this._iniFile = iniFile;
}
#endregion
#region Public Methods
/// <summary>
/// Чтение строки
/// </summary>
/// <param name="section">Секция</param>
/// <param name="key">Название ключа</param>
/// <param name="defaultValue">Значение по умолчанию</param>
/// <returns></returns>
public String ReadString(String section, String key, String defaultValue)
{
StringBuilder strBu = new StringBuilder(255);
GetPrivateProfileString(section, key, defaultValue, strBu, 255, _iniFile);
return strBu.ToString();
}
/// <summary>
/// Чтение целого числа
/// </summary>
/// <param name="section">Секция</param>
/// <param name="key">Название ключа</param>
/// <param name="defaultValue">значение по умолчанию</param>
/// <returns></returns>
public int ReadInt(String section, String key, int defaultValue)
{
return GetPrivateProfileInt(section, key, defaultValue, _iniFile);
}
/// <summary>
/// Запись строки
/// </summary>
/// <param name="section">Секция</param>
/// <param name="key">Название ключа</param>
/// <param name="value">Строка для записи</param>
public void WriteString(String section, String key, String value)
{
WritePrivateProfileString(section, key, value, _iniFile);
}
/// <summary>
/// Запись целого числа
/// </summary>
/// <param name="section">Секция</param>
/// <param name="key">Название ключа</param>
/// <param name="value">Число для записи</param>
public void WriteInt(String section, String key, int value)
{
WritePrivateProfileInt(section, key, value, _iniFile);
}
#endregion
}
Но при попытке вызова функций: Unable to find an entry point named 'WritePrivateProfileInt' in DLL 'kernel32'.
В чем может быть проблема?
Здравствуйте, aloch, Вы писали:
A>Здравствуйте, xakpc, Вы писали:
A>http://pinvoke.net/default.aspx/kernel32/WritePrivateProfileString.html
Спасибо! И сайт отличный, добавил в избранное.