.Net
INI
무명시인
2008. 12. 22. 09:05
// 클레스
using System;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
namespace IniFile
{
/// <summary>
/// TIniFile
/// Window INI 파일을 다루기 위한 클레스
///
/// </summary>
public class TIniFile
{
/// <summary>
/// ini 파일명을 저장
/// </summary>
private string INIFileName;
/// <summary>
/// ini 파일을 지정하거나 가져올때 쓰는 속성
/// </summary>
public string FileName
{
get { return INIFileName; }
set { INIFileName = value; }
}
/// <summary>
/// 생성자 : 사용할 ini 파일을 지정
/// </summary>
/// <param name="FileName">사용할 파일명</param>
public TIniFile(string FileName)
{
INIFileName = FileName;
}
/// <summary>
/// ini 파일에서 정보를 가져오기 위한 API 기초 함수
/// </summary>
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString(
string section,
string key,
string def,
StringBuilder retVal,
int size,
string filePath);
/// <summary>
/// ini 파일에서 정보를 쓰기위한 위한 API 기초 함수
/// </summary>
[DllImport("kernel32.dll")]
private static extern long WritePrivateProfileString(
string section,
string key,
string val,
string filePath);
/// <summary>
/// ini 파일에 정보를 기록하기 위한 함수
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록할 값</param>
private void _IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, INIFileName);
}
/// <summary>
/// ini 파일에 정보를 가져오기 위한 함수
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <returns>가져온 값</returns>
private string _IniReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(2000);
int i = GetPrivateProfileString(Section, Key, "", temp, 2000, INIFileName);
return temp.ToString().Trim();
}
/// <summary>
/// 문자열 타입으로 값을 기록한다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록 할 문자열</param>
public void SetString(string Section, string Key, string Value)
{
_IniWriteValue(Section, Key, Value.Trim());
}
/// <summary>
/// 정수 타입으로 값을 기록한다
/// </summary>
/// <param name="Section">섹션명 </param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록 할 정수값</param>
///
public void SetInteger(string Section, string Key, int Value)
{
_IniWriteValue(Section, Key, Value.ToString().Trim());
}
/// <summary>
/// 논리 타입으로 값을 기록 한다.
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록 할 논리 값</param>
public void SetBoolean(string Section, string Key, bool Value)
{
_IniWriteValue(Section, Key, Value ? "1" : "0");
}
/// <summary>
/// 논리 타입으로 값을 가져온다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 값</param>
/// <param name="def">기본값</param>
/// <returns>가져온 논리값</returns>
public bool GetBoolean(string Section, string Key, bool def)
{
bool temp = def;
string stTemp = _IniReadValue(Section, Key);
if (stTemp == "") return def;
if (stTemp.Trim() == "1") return true;
else return false;
}
/// <summary>
/// 문자열로 값을 가져 온다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <returns>가져온 문자열</returns>
public string GetString(string Section, string Key)
{
return _IniReadValue(Section, Key).Trim();
}
/// <summary>
/// 정수 타입으로 값을 가져 온다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="def">기본값</param>
/// <returns>가져온 정수값</returns>
public int GetInteger(string Section, string Key, int def)
{
int temp = def;
string stTemp = _IniReadValue(Section, Key);
if (stTemp == "") return def;
try
{
temp = int.Parse(stTemp.Trim());
}
catch (Exception)
{
return def;
}
return temp;
}
}
}
// 사용법 예
TIniFile ini = new TIniFile(Path.ChangeExtension(Application.ExecutablePath, ".ini"));
string value = ini.GetString("setup","DBConnationString");
// ini 내부
[setup]
DBConnationString = 연결문자열
using System;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
namespace IniFile
{
/// <summary>
/// TIniFile
/// Window INI 파일을 다루기 위한 클레스
///
/// </summary>
public class TIniFile
{
/// <summary>
/// ini 파일명을 저장
/// </summary>
private string INIFileName;
/// <summary>
/// ini 파일을 지정하거나 가져올때 쓰는 속성
/// </summary>
public string FileName
{
get { return INIFileName; }
set { INIFileName = value; }
}
/// <summary>
/// 생성자 : 사용할 ini 파일을 지정
/// </summary>
/// <param name="FileName">사용할 파일명</param>
public TIniFile(string FileName)
{
INIFileName = FileName;
}
/// <summary>
/// ini 파일에서 정보를 가져오기 위한 API 기초 함수
/// </summary>
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString(
string section,
string key,
string def,
StringBuilder retVal,
int size,
string filePath);
/// <summary>
/// ini 파일에서 정보를 쓰기위한 위한 API 기초 함수
/// </summary>
[DllImport("kernel32.dll")]
private static extern long WritePrivateProfileString(
string section,
string key,
string val,
string filePath);
/// <summary>
/// ini 파일에 정보를 기록하기 위한 함수
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록할 값</param>
private void _IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, INIFileName);
}
/// <summary>
/// ini 파일에 정보를 가져오기 위한 함수
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <returns>가져온 값</returns>
private string _IniReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(2000);
int i = GetPrivateProfileString(Section, Key, "", temp, 2000, INIFileName);
return temp.ToString().Trim();
}
/// <summary>
/// 문자열 타입으로 값을 기록한다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록 할 문자열</param>
public void SetString(string Section, string Key, string Value)
{
_IniWriteValue(Section, Key, Value.Trim());
}
/// <summary>
/// 정수 타입으로 값을 기록한다
/// </summary>
/// <param name="Section">섹션명 </param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록 할 정수값</param>
///
public void SetInteger(string Section, string Key, int Value)
{
_IniWriteValue(Section, Key, Value.ToString().Trim());
}
/// <summary>
/// 논리 타입으로 값을 기록 한다.
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="Value">기록 할 논리 값</param>
public void SetBoolean(string Section, string Key, bool Value)
{
_IniWriteValue(Section, Key, Value ? "1" : "0");
}
/// <summary>
/// 논리 타입으로 값을 가져온다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 값</param>
/// <param name="def">기본값</param>
/// <returns>가져온 논리값</returns>
public bool GetBoolean(string Section, string Key, bool def)
{
bool temp = def;
string stTemp = _IniReadValue(Section, Key);
if (stTemp == "") return def;
if (stTemp.Trim() == "1") return true;
else return false;
}
/// <summary>
/// 문자열로 값을 가져 온다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <returns>가져온 문자열</returns>
public string GetString(string Section, string Key)
{
return _IniReadValue(Section, Key).Trim();
}
/// <summary>
/// 정수 타입으로 값을 가져 온다
/// </summary>
/// <param name="Section">섹션명</param>
/// <param name="Key">키 명</param>
/// <param name="def">기본값</param>
/// <returns>가져온 정수값</returns>
public int GetInteger(string Section, string Key, int def)
{
int temp = def;
string stTemp = _IniReadValue(Section, Key);
if (stTemp == "") return def;
try
{
temp = int.Parse(stTemp.Trim());
}
catch (Exception)
{
return def;
}
return temp;
}
}
}
// 사용법 예
TIniFile ini = new TIniFile(Path.ChangeExtension(Application.ExecutablePath, ".ini"));
string value = ini.GetString("setup","DBConnationString");
// ini 내부
[setup]
DBConnationString = 연결문자열