/// <summary> /// 在INI文件中,删除指定节点中的所有内容。 /// </summary> /// <param name="iniFile">INI文件</param> /// <param name="section">节点</param> /// <returns>操作是否成功</returns> public static bool INIEmptySection(string iniFile, string section) { if (string.IsNullOrEmpty(section)) { throw new ArgumentException("必须指定节点名称", "section"); } return(INIOperationClass.WritePrivateProfileSection(section, string.Empty, iniFile)); }
/// <summary> /// 在INI文件中,将指定的键值对写到指定的节点,如果已经存在则替换 /// </summary> /// <param name="iniFile">INI文件</param> /// <param name="section">节点,如果不存在此节点,则创建此节点</param> /// <param name="items">键值对,多个用\0分隔,形如key1=value1\0key2=value2</param> /// <returns></returns> public static bool INIWriteItems(string iniFile, string section, string items) { if (string.IsNullOrEmpty(section)) { throw new ArgumentException("必须指定节点名称", "section"); } if (string.IsNullOrEmpty(items)) { throw new ArgumentException("必须指定键值对", "items"); } return(INIOperationClass.WritePrivateProfileSection(section, items, iniFile)); }
/// <summary> /// 在INI文件中,删除指定节点中的指定的键。 /// </summary> /// <param name="iniFile">INI文件</param> /// <param name="section">节点</param> /// <param name="key">键</param> /// <returns>操作是否成功</returns> public static bool INIDeleteKey(string iniFile, string section, string key) { if (string.IsNullOrEmpty(section)) { throw new ArgumentException("必须指定节点名称", "section"); } if (string.IsNullOrEmpty(key)) { throw new ArgumentException("必须指定键名称", "key"); } return(INIOperationClass.WritePrivateProfileString(section, key, null, iniFile)); }
/// <summary> /// 在INI文件中,指定节点写入指定的键及值。如果已经存在,则替换。如果没有则创建。 /// </summary> /// <param name="iniFile">INI文件</param> /// <param name="section">节点</param> /// <param name="key">键</param> /// <param name="value">值</param> /// <returns>操作是否成功</returns> public static bool INIWriteValue(string iniFile, string section, string key, string value) { if (string.IsNullOrEmpty(section)) { throw new ArgumentException("必须指定节点名称", "section"); } if (string.IsNullOrEmpty(key)) { throw new ArgumentException("必须指定键名称", "key"); } if (value == null) { throw new ArgumentException("值不能为null", "value"); } return(INIOperationClass.WritePrivateProfileString(section, key, value, iniFile)); }
/// <summary> /// 获取INI文件中指定节点(Section)中的所有条目的Key列表 /// </summary> /// <param name="iniFile">Ini文件</param> /// <param name="section">节点名称</param> /// <returns>如果没有内容,反回string[0]</returns> public static string[] INIGetAllItemKeys(string iniFile, string section) { string[] value = new string[0]; const int SIZE = 1024 * 10; if (string.IsNullOrEmpty(section)) { throw new ArgumentException("必须指定节点名称", "section"); } char[] chars = new char[SIZE]; uint bytesReturned = INIOperationClass.GetPrivateProfileString(section, null, null, chars, SIZE, iniFile); if (bytesReturned != 0) { value = new string(chars).Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); } chars = null; return(value); }
/// <summary> /// 获取INI文件中指定节点(Section)中的所有条目(key=value形式) /// </summary> /// <param name="iniFile">Ini文件</param> /// <param name="section">节点名称</param> /// <returns>指定节点中的所有项目,没有内容返回string[0]</returns> public static string[] INIGetAllItems(string iniFile, string section) { //返回值形式为 key=value,例如 Color=Red uint MAX_BUFFER = 32767; //默认为32767 string[] items = new string[0]; //返回值 //分配内存 IntPtr pReturnedString = Marshal.AllocCoTaskMem((int)MAX_BUFFER * sizeof(char)); uint bytesReturned = INIOperationClass.GetPrivateProfileSection(section, pReturnedString, MAX_BUFFER, iniFile); if (!(bytesReturned == MAX_BUFFER - 2) || (bytesReturned == 0)) { string returnedString = Marshal.PtrToStringAuto(pReturnedString, (int)bytesReturned); items = returnedString.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); } Marshal.FreeCoTaskMem(pReturnedString); //释放内存 return(items); }
/// <summary> /// 读取INI文件中指定INI文件中的所有节点名称(Section) /// </summary> /// <param name="iniFile">Ini文件</param> /// <returns>所有节点,没有内容返回string[0]</returns> public static string[] INIGetAllSectionNames(string iniFile) { uint MAX_BUFFER = 32767; //默认为32767 string[] sections = new string[0]; //返回值 //申请内存 IntPtr pReturnedString = Marshal.AllocCoTaskMem((int)MAX_BUFFER * sizeof(char)); uint bytesReturned = INIOperationClass.GetPrivateProfileSectionNames(pReturnedString, MAX_BUFFER, iniFile); if (bytesReturned != 0) { //读取指定内存的内容 string local = Marshal.PtrToStringAuto(pReturnedString, (int)bytesReturned).ToString(); //每个节点之间用\0分隔,末尾有一个\0 sections = local.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); } //释放内存 Marshal.FreeCoTaskMem(pReturnedString); return(sections); }
/// <summary> /// 在配置文件中读取门限值 /// </summary> private void GetErrorDataIndex() { string threshold_str = INIOperationClass.INIGetStringValue(@"e:\TRTWork\ExeceCamer\ExeceCamera\ExeceCamera\threshold.ini", "threshold", " threshold_start", "0"); double threshold = Convert.ToDouble(threshold_str);//限制系数 double k = threshold; string R_G_1_up = string.Empty; //保存上限 string R_G_1_down = string.Empty; //保存下限 string B_G_1_up = string.Empty; //保存上限 string B_G_1_down = string.Empty; //保存下限 string R_G_0_up = string.Empty; //保存上限 string R_G_0_down = string.Empty; //保存下限 string B_G_0_up = string.Empty; //保存上限 string B_G_0_down = string.Empty; //保存下限 int[] indexs_Lens0; //存储说有超标下标 int[] indexs_Lens1; List <int> indexs_count = new List <int>(); List <int> indexs_count_Lens1 = new List <int>(); for (int i = 0; i < 24; i++) { double[] d_ = HelpMethod.GetDataCateDouble(dt, naem_r_g[i], "Lens0"); HelpMethod.GetErrorDataIndex(d_, k, out indexs_Lens0); indexs_count.AddRange(indexs_Lens0); double[] d_Lens1 = HelpMethod.GetDataCateDouble(dt, naem_r_g[i], "Lens1"); HelpMethod.GetErrorDataIndex(d_Lens1, k, out indexs_Lens1); indexs_count_Lens1.AddRange(indexs_Lens1); } indexs_Lens0 = indexs_count.Distinct().ToArray(); if (indexs_Lens0.Count() != 0) { DataRow row; DataTable errorData_dt = new DataTable("errorData"); errorData_dt.Columns.Add("Filename"); errorData_dt.Columns.Add("ID"); //添加选择框 DataGridViewCheckBoxColumn newColumn = new DataGridViewCheckBoxColumn(); newColumn.HeaderText = "√表示可以通过"; newColumn.Name = "IsCheck"; dataGridView1.Columns.Add(newColumn); for (int i = 0; i < indexs_Lens0.Count(); i++) { row = errorData_dt.NewRow(); row["ID"] = indexs_Lens0[i]; row["Filename"] = dt.Rows[indexs_Lens0[i]]["Filename"]; errorData_dt.Rows.Add(row); } dataGridView1.DataSource = errorData_dt; dataGridView1.Visible = true; int indexs; int[] id; id = GetRowChecked(out indexs); //foreach (var item in id) //{ // double dd= Convert.ToDouble(dt.Rows[item][""]); //} } }