From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 HMI.Util/IniFileHelper.cs |  144 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 144 insertions(+), 0 deletions(-)

diff --git a/HMI.Util/IniFileHelper.cs b/HMI.Util/IniFileHelper.cs
new file mode 100644
index 0000000..2494ec7
--- /dev/null
+++ b/HMI.Util/IniFileHelper.cs
@@ -0,0 +1,144 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace HMI.Util
+{
+    public class IniFileHelper
+    {
+        private static String filePath = "./default.ini";
+        static List<string> sections = new List<string>();
+        static List<string> keys = new List<string>();
+        #region API鍑芥暟澹版槑
+
+        [DllImport("kernel32")]
+        private static extern long WritePrivateProfileString(string section, string key,
+            string val, string filePath);
+
+        //闇�瑕佽皟鐢℅etPrivateProfileString鐨勯噸杞�
+        [DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
+        private static extern long GetPrivateProfileString(string section, string key,
+            string def, StringBuilder retVal, int size, string filePath);
+
+        [DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
+        private static extern uint GetPrivateProfileStringA(string section, string key,
+            string def, Byte[] retVal, int size, string filePath);
+
+        [DllImport("kernel32")]
+        private static extern int GetPrivateProfileSection(string section, byte[] retVal, int size, string filePath);
+
+        #endregion
+        public static List<string> ReadSections()
+        {
+            return ReadSections(filePath);
+        }
+
+        public static List<string> ReadSections(string iniFilename)
+        {
+            List<string> result = new List<string>();
+            Byte[] buf = new Byte[65536];
+            uint len = GetPrivateProfileStringA(null, null, null, buf, buf.Length, iniFilename);
+            int j = 0;
+            for (int i = 0; i < len; i++)
+                if (buf[i] == 0)
+                {
+                    result.Add(Encoding.Default.GetString(buf, j, i - j));
+                    j = i + 1;
+                }
+            return result;
+        }
+
+        public static List<string> ReadKeys(String SectionName)
+        {
+            return ReadKeys(SectionName, filePath);
+        }
+
+        public static List<string> ReadKeys(string SectionName, string iniFilename)
+        {
+            List<string> result = new List<string>();
+            Byte[] buf = new Byte[65536];
+            uint len = GetPrivateProfileStringA(SectionName, null, null, buf, buf.Length, iniFilename);
+            int j = 0;
+            for (int i = 0; i < len; i++)
+                if (buf[i] == 0)
+                {
+                    result.Add(Encoding.Default.GetString(buf, j, i - j));
+                    j = i + 1;
+                }
+            return result;
+        }
+        public static void SetFilePath(String filepath)
+        {
+            filePath = filepath;
+        }
+        #region 璇籌ni鏂囦欢
+
+        public static string ReadIniData(string Section, string Key, string NoText)
+        {
+            return ReadIniData(Section, Key, NoText, filePath);
+        }
+
+        public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
+        {
+            if (File.Exists(iniFilePath))
+            {
+                StringBuilder temp = new StringBuilder(1024);
+                GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
+                return temp.ToString();
+            }
+            else
+                return NoText;
+        }
+
+        #endregion
+
+        #region 鍐橧ni鏂囦欢
+
+
+        public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
+        {
+            if (File.Exists(iniFilePath) == false)
+
+            {
+                FileStream FS = new FileStream(iniFilePath, FileMode.CreateNew);
+            }
+            long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
+            if (OpStation == 0)
+                return false;
+            else
+                return true;
+        }
+        #endregion
+
+        public static Dictionary<string, string> GetKeyValuesBySection(string iniFile, string section)
+        {
+            int size = 65536;
+            byte[] buffer = new byte[size];
+
+            Dictionary<string, string> result = new Dictionary<string, string>();
+            int bytesRead = GetPrivateProfileSection(section, buffer, size, iniFile);
+            if (bytesRead > 0)
+            {
+                string sectionData = Encoding.Default.GetString(buffer, 0, bytesRead - 1);
+                string[] keyValuePairs = sectionData.Split('\0');
+
+                foreach (string pair in keyValuePairs)
+                {
+                    if (!string.IsNullOrEmpty(pair))
+                    {
+                        int equalSignIndex = pair.IndexOf('=');
+                        if (equalSignIndex > 0)
+                        {
+                            string key = pair.Substring(0, equalSignIndex).Trim();
+                            string value = pair.Substring(equalSignIndex + 1).Trim();
+                            result[key] = value;
+                        }
+                    }
+                }
+            }
+            return result;
+        }
+    }
+}

--
Gitblit v1.9.1