c# INI Reader

간단한 ini 관리 클래스입니다.
읽고 쓰기 모두 들어있습니다.
코드는 간단하니 알아보기도 쉬울것 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
public class INIReader
    {
        private string INIFileName;
 
        public string FileName
        {
            get { return INIFileName; }
            set { INIFileName = value; }
        }
 
        public void TIniFile(string FileName)
        {
            INIFileName = FileName;
        }
 
        [DllImport("kernel32.dll")]
        private static extern int GetPrivateProfileString(
                    string section,
                    string key,
                    string def,
                    StringBuilder retVal,
                    int size,
                    string filePath);
        [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(255);
            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;
        }
 
        public double GetDouble(string Section, string Key, double def)
        {
            double temp = def;
            string stTemp = _IniReadValue(Section, Key);
            if (stTemp == "") return def;
            try
            {
                temp = double.Parse(stTemp.Trim());
            }
            catch (Exception)
            {
                return def;
            }
            return temp;
        }
    }

댓글

이 블로그의 인기 게시물

c# GDI+ 꺼져!! BufferedGraphics

c# 에서 C++ dll 사용하기

c# string 에서 mfc의 LPCTSTR간의 변환