본문으로 바로가기

C# ini 파일 이용하기

category C# 2019. 7. 19. 22:01
반응형

안녕하세요~ 이번엔 C#에서 ini 파일을 이용하여 데이터를 가져오는 방법입니다.

 [System.Runtime.InteropServices.DllImport("kernel32")] 는

System.Runtime.InteropServices.DllImport 네임스페이스에 있는 DIIImport를 사용하여 kernel32라는 함수를

사용한다는 의미입니다.

 

WritePrivateProfileString 은 ini 파일에 쓰기 위한 함수며

GetPrivateProfileString은 ini 파일에 있는 데이터를 읽기 위한 함수입니다.

 

WriteINI 함수를 만들어 위에서 말한  WritePrivateString 함수를 통해 매개변수에 값을 넣어

ini 파일에 넣어주는 함수입니다.

 

Path 는 ini 파일이 저장되는 곳입니다.

함수를 실행하게되면

 

[CONSETUP]
PORT=COM3
CODE=1
BAUDRATE=9600
PARITYBIT=N
DATABIT=8
STOPBIT=2 

 

이렇게 ini 파일에 저장이 되고 파일이 생성됩니다.

 

또 이렇게 작성된 ini 파일을 GetPrivateProfileString 함수에서 StrinfBuilder 를 사용하여 데이터를 가져오고 있습니다.

각 전역변수에 넣어주는 로직이구요

 

이렇게 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace test
{
    public static class Config
    {
        
        //===============================================================
        //INI 파일 만들기(쓰기)
        /// <summary>
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <param name="val"></param>
        /// <param name="filePath"></param>
        /// <returns></returns>
        [System.Runtime.InteropServices.DllImport("kernel32")]
        public static extern int WritePrivateProfileString(string section, string key, string val, string filePath);
 
        //==================================================================
        //INI 파일 가져오기(읽기)
        /// <summary>
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <param name="val"></param>
        /// <param name="filePath"></param>
        /// <returns></returns>
        [System.Runtime.InteropServices.DllImport("kernel32")]
        public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
 
        //ini 파일 경로
        public static string path = @"C:\Source\C#\test\test\Config.ini";
 
        //ini 파일 설정
        /// <summary>
        /// </summary>
        /// <param name="com" 포트번호></param>
        /// <param name="pcode" 코드번호></param>
        public static void WriteINI(string com, int code, int baudrate, char parity, int data, int stop)
        {
           
            WritePrivateProfileString("CONSETUP""PORT", com, path);
            WritePrivateProfileString("CONSETUP""PCODE", code.ToString(), path);
            WritePrivateProfileString("CONSETUP""BAUDRATE", baudrate.ToString(), path);
            WritePrivateProfileString("CONSETUP""PARITYBIT", parity.ToString(), path);
            WritePrivateProfileString("CONSETUP""DATABIT", data.ToString(), path);
            WritePrivateProfileString("CONSETUP""STOPBIT", stop.ToString(), path);
            //MessageBox.Show("WriteINI" + com + code + baudrate + parity +  data + stop + path);
            TKstarData.Con = true;
 
 
        }
        
        //ini 파일 읽기
        public static void ReadINI()
        {
           
            StringBuilder sb = new StringBuilder();
            
            GetPrivateProfileString("CONSETUP""PORT"null, sb, 1024, path);
            if(sb.ToString() != null) Port = sb.ToString();
            GetPrivateProfileString("CONSETUP""CODE"null, sb, 1024, path);
            if (sb.ToString() != "") code = Int32.Parse(sb.ToString());
            GetPrivateProfileString("CONSETUP""BAUDRATE"null, sb, 1024, path);
            if (sb.ToString() != "") Baudrate = Int16.Parse(sb.ToString());
            GetPrivateProfileString("CONSETUP""PARITYBIT"null, sb, 1024, path);
            if (sb.ToString() != null) Parity = sb.ToString();
            GetPrivateProfileString("CONSETUP""DATABIT"null, sb, 1024, path);
            if (sb.ToString() != "") Data = Int16.Parse(sb.ToString());
            GetPrivateProfileString("CONSETUP""STOPBIT"null, sb, 1024, path);
            if (sb.ToString() != "") Stop = Int16.Parse(sb.ToString());
 
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs
반응형

'C#' 카테고리의 다른 글

C# 모드버스 RTU 시리얼통신 구현하기  (59) 2019.08.05
C# Modbus RTU CRC 구하기  (0) 2019.07.29
C# Byte 배열로 형변환 하기  (0) 2019.07.15
C# Postgresql 연동하기  (0) 2019.04.23
C# 폼에서 폼으로 파라미터 인수 넘기기  (0) 2019.04.17