using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
namespace ITC81DB
{
public class IniFile
{
[DllImport("KERNEL32.DLL")]
private static extern bool WritePrivateProfileString(string IpAppName, string IpKeyName, string IpString, string IpFileName);
[DllImport("KERNEL32.DLL")]
private static extern uint GetPrivateProfileInt(string IpAppName, string IpKeyName, int nDefault, string IpFileName);
[DllImport("KERNEL32.DLL")]
static extern uint GetPrivateProfileString(string IpAppName, string IpKeyName, string IpDefault, StringBuilder IpReturnedString, int nSize, string IpFileName);
///
/// Ini 파일 읽기
///
/// 값을 가져올 키가 속해있는 [섹션] 문자열
/// 값을 가져올 키
/// 해당되는 값이 없을 경우, 기본값으로 리턴할 문자열
/// 읽어올 ini 파일 경로
/// 실패 : "" 반환
public static string GetIni(String IpAppName, string IpKeyName, string IpDefault, string filePath)
{
string ret = "";
string iniFile = filePath;
try
{
string readString = "";
string[] stringArray;
using (StreamReader sr = new StreamReader(filePath, Encoding.Default))
{
readString = sr.ReadToEnd();
sr.BaseStream.Position = 0;
// Key값이 포함된 Line을 읽을 경우
if (readString.Contains(IpKeyName) == true)
{
int length;
string[] text = readString.Split('\n');
for (int i = 0; i < text.Length; i++)
text[i] = text[i].Trim();
for (int i = 0; i < text.Length; i++)
{
if (text[i].StartsWith(IpKeyName) == true)
{
stringArray = text[i].Split('=');
ret = stringArray[stringArray.Length - 1];
break;
}
}
sr.Close();
}
}
return ret;
}
catch (Exception ex)
{
return "";
}
}
///
/// Ini 파일 쓰기
///
/// 값을 입력할 키가 속해있는 [섹션] 문자열
/// 값을 입력할 키
/// 쓸 키 값
/// 쓸 ini 파일 경로
/// 성공 : true, 실패 : false
public static Boolean SetIni(string IpAppName, string IpKeyName, string IpValue, string filePath)
{
try
{
string iniFile = filePath;
string readString = "";
using (StreamReader sr = new StreamReader(filePath, Encoding.Default))
{
readString = sr.ReadToEnd();
sr.BaseStream.Position = 0;
// Key값이 포함된 Line을 읽을 경우
if (readString.Contains(IpKeyName) == true)
{
int length;
string[] text = readString.Split('\n');
for (int i = 0; i < text.Length; i++)
text[i] = text[i].Trim();
for (int i = 0; i < text.Length; i++)
{
if (text[i].StartsWith(IpKeyName) == true)
{
length = text[i].Length;
int offset = readString.IndexOf(IpKeyName, 0);
readString = readString.Remove(offset, length);
readString = readString.Insert(offset, IpKeyName + "=" + IpValue);
break;
}
}
sr.Close();
File.Delete(filePath);
StreamWriter sw = new StreamWriter(filePath, true, Encoding.Default);
sw.Write(readString);
sw.Close();
return true;
}
}
return false;
}
catch
{
return false;
}
}
///
/// Ini 파일 생성
///
/// Program명(ex. ITC81DB)
/// Version(ex. 8.0.0)
/// 릴리즈 날짜(ex. 2022.03.04)
/// 성공 : true, 실패 : false
public static Boolean CreateVersionIni(string programName, string version, string releaseDate)
{
try
{
string strCheckFolder = "";
strCheckFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\";
strCheckFolder += "Version.ini";
if (File.Exists(strCheckFolder) == false)
{
using (StreamWriter sw = new StreamWriter(strCheckFolder, true, Encoding.Default))
{
sw.Write("[PROGRAMINFO]" + "\r\n");
sw.Write("NAME=" + programName + "\r\n");
sw.Write("VERSION=" + version + "\r\n");
sw.Write("RELEASE=" + releaseDate + "\r\n");
}
}
}
catch
{
return false;
}
return true;
}
}
}