변수값을 하드에 저장해야 할 때, C#에서는 ini 파일을 사용함
ini파일은 매개변수와 섹션으로 이루어져 있고, 매개변수는 이름과 값을 가지고 있다.
[섹션]
키=밸류
[owner]
name=홍길동
organization=최고의 제품
[database]
server=192.0.2.62
port=143
file="payroll.dat"
using System.Runtime.InteropServices; //DllImport
이게 있어야 [DllImport("kernel32")] 이거를 할 수 있다.
using System;
using System.Runtime.InteropServices; // DllImport
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PracINI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// ini파일 입출력 메소드
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
[DllImport("kernel32")]
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder reVal, int size, string filepath);
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btn_Read_Click(object sender, EventArgs e)
{
StringBuilder A1 = new StringBuilder();
StringBuilder A2 = new StringBuilder();
StringBuilder A3 = new StringBuilder();
StringBuilder B1 = new StringBuilder();
StringBuilder B2 = new StringBuilder();
StringBuilder B3 = new StringBuilder();
StringBuilder C1 = new StringBuilder();
StringBuilder C2 = new StringBuilder();
StringBuilder C3 = new StringBuilder();
GetPrivateProfileString("A", "1", "a", A1, 32, "\test.ini"); // 섹션, 키, 기본값, 변수, 크기, 경로
GetPrivateProfileString("A", "2", "b", A2, 32, "\test.ini");
GetPrivateProfileString("A", "3", "c", A3, 32, "\test.ini");
GetPrivateProfileString("B", "1", "d", B1, 32, "\test.ini"); // 섹션, 키, 기본값, 변수, 크기, 경로
GetPrivateProfileString("B", "2", "e", B2, 32, "\test.ini");
GetPrivateProfileString("B", "3", "f", B3, 32, "\test.ini");
GetPrivateProfileString("C", "1", "g", C1, 32, "\test.ini"); // 섹션, 키, 기본값, 변수, 크기, 경로
GetPrivateProfileString("C", "2", "h", C2, 32, "\test.ini");
GetPrivateProfileString("C", "3", "i", C3, 32, "\test.ini");
rtb.Text = A1.ToString();
rtb.Text += A2.ToString();
rtb.Text += A3.ToString();
rtb.Text += B1.ToString();
rtb.Text += B2.ToString();
rtb.Text += B3.ToString();
rtb.Text += C1.ToString();
rtb.Text += C2.ToString();
rtb.Text += C3.ToString();
}
private void btn_Write_Click(object sender, EventArgs e)
{
WritePrivateProfileString("A", "1", "a", Application.StartupPath + @"\test.ini"); // 섹션, 키, 밸류, 경로
WritePrivateProfileString("A", "2", "b", Application.StartupPath + @"\test.ini");
WritePrivateProfileString("A", "3", "c", Application.StartupPath + @"\test.ini");
WritePrivateProfileString("B", "1", "d", Application.StartupPath + @"\test.ini");
WritePrivateProfileString("B", "2", "e", Application.StartupPath + @"\test.ini");
WritePrivateProfileString("B", "3", "f", Application.StartupPath + @"\test.ini");
WritePrivateProfileString("C", "1", "g", Application.StartupPath + @"\test.ini");
WritePrivateProfileString("C", "2", "h", Application.StartupPath + @"\test.ini");
WritePrivateProfileString("C", "3", "i", Application.StartupPath + @"\test.ini");
MessageBox.Show("ini파일 생성완료");
}
}
}

섹션 간에 줄바꿈이 없어서 불편하지만 어찌저찌 ini 파일이 만들어졌다.
++
아이템이 끝나는 지점에 개행을 넣어주었더니 해결!
하나씩 때려박을것을 어떻게 for문으로 돌릴 수 있을지 생각해보자.

< 참고한 사이트 >
https://www.delftstack.com/ko/howto/csharp/csharp-ini-file/
'C#' 카테고리의 다른 글
| 반복문 for VS for each 차이 (0) | 2025.10.28 |
|---|---|
| ini 프로그램 (gpt 사용) (0) | 2025.10.27 |
| C# ini 파일 읽기 (0) | 2025.10.27 |
| 파일 입출력 (0) | 2025.10.23 |
| 시리얼 통신 (0) | 2025.10.22 |