/
vasilievvf
/
SPP
Обзор
Документация
Войти
/
vasilievvf
/
SPP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Projects/Addons/Csharp/SPP_Hard/IniFile.cs
129 строк
5 KB
Vladimir Vasilev
Добавил_каталог_Addons,_проект_TestDll_для_проверки_работы_библиотеки_Ag34411A_Om.
13 май 2026, 12:59
13 май 2026, 12:59
4958c27
Код
Авторство
О чём код?
using System; using System.Collections.ObjectModel; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Text; namespace SPP_Hard { class IniFile { static IniFile() { /// Создать файл ini, если его нет. CreateIniFile(); } static private string connectedPortNumber; static public string ConnectedPortNumber { get { string portNumber = Read("RS-232", "portNumber"); return portNumber; } set { connectedPortNumber = value; Write("RS-232", "portNumber", connectedPortNumber); } } static string path; //Имя файла. /// <summary> /// Создаёт ini файл, если он отсутствует. /// </summary> static internal void CreateIniFile() { path = AppDomain.CurrentDomain.BaseDirectory; path = string.Concat(path, "Settings.ini"); #region Условие создания нового файла. if (!File.Exists(path)) { // Create a FileStream with mode CreateNew FileStream stream = new FileStream(path, FileMode.CreateNew); try { // Создаётся и записывается файл ini. using (StreamWriter sw = new StreamWriter(stream, Encoding.Unicode)) { #region Текст в ini файл. sw.WriteLine("[RS-232]"); sw.WriteLine("; Номер подключаемого последовательного порта."); sw.WriteLine("portNumber = 1"); #endregion Текст в ini файл. } } finally { if (stream != null) stream.Dispose(); } } #endregion Условие создания нового файла. } internal void EditIniFile() { string s; //// Прибор №1 //s = ((ParametersUC)mainWindow.grid.Children[0]).textBox.Text; //Write("Device", "d1", s); } [DllImport("kernel32")] // Подключаем kernel32.dll и описываем его функцию WritePrivateProfilesString static extern long WritePrivateProfileString(string Section, string Key, string Value, string FilePath); [DllImport("kernel32", CharSet = CharSet.Auto)] // Еще раз подключаем kernel32.dll, а теперь описываем функцию GetPrivateProfileString static extern int GetPrivateProfileString(string Section, string Key, string Default, StringBuilder RetVal, int Size, string FilePath); // С помощью конструктора записываем путь до файла и его имя. public IniFile(string IniPath) { path = new FileInfo(IniPath).FullName.ToString(); } // Читаем ini-файл и возвращаем значение указаного ключа из заданной секции. static public string Read(string Section, string Key) { var RetVal = new StringBuilder(255); GetPrivateProfileString(Section, Key, "", RetVal, 255, path); return RetVal.ToString(); } // Записываем в ini-файл. Запись происходит в выбранную секцию в выбранный ключ. static public void Write(string Section, string Key, string Value) { WritePrivateProfileString(Section, Key, Value, path); } // Удаляем ключ из выбранной секции. public void DeleteKey(string Key, string Section = null) { Write(Section, Key, null); } // Удаляем выбранную секцию public void DeleteSection(string Section = null) { Write(Section, null, null); } // Проверяем, есть ли такой ключ, в этой секции public bool KeyExists(string Key, string Section = null) { return Read(Section, Key).Length > 0; } } }