我ini写入 同样的Section  同样的Key  为什么不会覆盖  方法如下Ini ini = new Ini(Application.StartupPath + "\\Settings.ini");
            ini.WriteValue("COM", "PortName", Port.PortName);
            ini.WriteValue("COM", "BaudRate", Port.BaudRate);
            ini.WriteValue("COM", "DataBits", Port.DataBits.ToString());
            ini.WriteValue("COM", "Parity", Port.Parity.ToString());
第一次我写入com1
第二次我写入com2
跟踪过都是调用下面方法
打开Release中Settings.ini里面却如下[COM]
PortName=COM1
BaudRate=9600
DataBits=8
Parity=None
StopBits=One
Handshake=None[COM]
PortName=COM2
BaudRate=9600
DataBits=8
Parity=None
StopBits=One
Handshake=None

解决方案 »

  1.   

    ini类如下
    namespace Temperature
    {
        public class Ini
        {
            public string path;        [DllImport("kernel32")]
            private static extern long WritePrivateProfileString(string section,
                string key,string val,string filePath);
            
            [DllImport("kernel32")]
            private static extern int GetPrivateProfileString(string section,
                string key,string def, StringBuilder retVal, int size,string filePath);        public Ini(string INIPath)
            {
                path = INIPath;
            }        public int ReadValue(string Section, string Key, int Default)
            {
                StringBuilder buffer = new StringBuilder(255);
                GetPrivateProfileString(Section, Key, Default.ToString(), buffer, 255, this.path);
                return int.Parse(buffer.ToString());
            }
            
            public string ReadValue(string Section, string Key, string Default) 
            {
                StringBuilder buffer = new StringBuilder(255);
                GetPrivateProfileString(Section, Key, Default, buffer, 255, this.path);
                return buffer.ToString();
            }        public void WriteValue(string Section, string Key, string Value)
            {
                WritePrivateProfileString(Section, Key, Value, this.path);
            }        public void WriteValue(string Section, string Key, int Value)
            {
                WritePrivateProfileString(Section, Key, Value.ToString(), this.path);
            }        public static string GetString()
            {
                if (System.IO.File.Exists(path) == false)
                {
                    return "";
                }
                StringBuilder sb = new StringBuilder(255);
                int i = GetPrivateProfileString("Database", "server", "", sb, 255, path);
                return sb.ToString();
            }  
        }
    }