Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 8

Считывание и изменение значений в ini файле

09.06.2014, 16:27. Показов 2304. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Что мне надо:
Имеем файл *.ini вида
Code
1
2
3
4
key1 = value1
key2 = value2
...
keyN = valueN
value может быть float, int(для них хочу использовать текстбоксы) или boolean(для этих чекбоксы).

От программы мне собственно что надо, заходим в нее, меняем значения/ставим галочки, кликаем кнопку сохранить, и файл у нас перезаписывается.

Хочу спросить где можно посмотреть подобный код, либо какую главу какой книги прочесть, что бы понять как сделать. Плохо пока выучил методы, а со считыванием значений ключей из файла вообще не справляюсь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2014, 16:27
Ответы с готовыми решениями:

Считывание и измение в ini файле на ftp
Уважаемые программисты можно ли как то считать и изменить ini файл напрямую на сервере не скачивая его на компьютер? Если можно то каким...

Изменение строчки в ini файле
Не могу найти ничего толкового. Собственно самому написать не хватает опыта. имеется INI файл такого плана: NickName=User1 ...

Сортировка значений в файле ini...
Здравствуйте! Есть проблема, создал файл ini в него по программе записывается вот этот текст: Tem1=123 Tem1=234 Tem1=345 ...

6
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
09.06.2014, 17:05
Карлан, я бы посоветовал вместо простого текстовика использовать xml.
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 8
09.06.2014, 17:23  [ТС]
Не, xml мне не подходит, нужно именно то, что я описал.

Просто подскажите мне методы которыми можно выполнить следующий алгоритм:
1 Открываем файл по заданному пути, отталкиваясь от того места, где лежит программа.
2 Считываем значения ключей
3 Меняем значения ключей
4 Сохраняем файл

Пока читаю мсдн, но что-то нужного пока не нахожу, сдвиги разумеется уже есть, но все как-то медленно. Не уверен что вообще в правильном направлении копаю.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
09.06.2014, 17:45
Карлан, а чем вам xml плох?
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 8
10.06.2014, 17:21  [ТС]
Тем, что не смогу прочитать его в дальнейшем.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
10.06.2014, 17:42
Цитата Сообщение от Карлан Посмотреть сообщение
Тем, что не смогу прочитать его в дальнейшем.
Это еще почему?

Добавлено через 6 минут
Вот пример. Форма, кнопка два текстовых поля и два чекбокса.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using System.Xml.Linq;
using System.IO;
 
namespace WindowsFormsApplication36
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += delegate { LoadFile(); };
            button1.Click += delegate { MakeFile(); };
        }
        private void LoadFile()
        {
            if (File.Exists(@"C:\myIni.xml"))
            {
                XElement doc = XElement.Load(@"C:\myIni.xml");
                XElement txt = doc.Element("txt");
 
                textBox1.Text = txt.Element("txt1").Value;
                textBox2.Text = txt.Element("txt2").Value;
 
                string ch1 = doc.Element("chBox").Element("chBox1").Value;
                checkBox1.Checked = (ch1 == "true");
 
                string ch2 = doc.Element("chBox").Element("chBox2").Value;
                checkBox2.Checked = (ch2 == "true");
            }
        }
        private void MakeFile()
        {
            bool ch1 = checkBox1.Checked ? true : false;
            bool ch2 = checkBox2.Checked ? true : false;
 
            XElement doc = new XElement("doc",
                new XElement("txt",
                    new XElement("txt1", textBox1.Text),
                    new XElement("txt2", textBox2.Text)),
                new XElement("chBox",
                    new XElement("chBox1", ch1),
                    new XElement("chBox2", ch2)
                    ));
            doc.Save(@"C:\myIni.xml");
            this.Close();
        }
    }
}
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 8
10.06.2014, 19:24  [ТС]
Спасибо за пример, но мне xml не подходит, и все тут. Нужно именно считывать и записывать так, как я описал в первом посте. Пока сижу на ConsoleApplication, пытаюсь сделать код на изменение значения заданного ключа. Потуги мои сейчас вот на данном этапе :

C#
1
2
3
4
5
6
7
8
9
10
11
        public static void Main()
        {
            string readText, path = @"c:\temp\MyTest.ini";
 
            if (File.Exists(path) == true)
            {
                readText = File.ReadAllText(path);
                Console.WriteLine(readText);
                Console.ReadKey();
            }
        }
Подскажите мне лучше как считать и изменить заданную строку. Т.е. получить конкретно какую-то и ей присвоить новое значение. Присваивать я вроде понимаю как. Если строка то просто "= "моя строка"", а если число, то "= мое число.ToNumber()". Пока не сильно разобрался в c#, но надеюсь паттерн на разбиение строки по знаку = делать не нужно будет.

Т.е. я о том, что надо будет считывать все строки, разбивать их по =, записывать в массив(или даже в два?), в массиве их изменять, и потом из массива формировать новый лист ключей с новыми значениями и записывать в мой файл.

Хотя фигню какую-то я сказал, по сути нафиг массив, считывать только одну строку, т.к. у меня одной кнопкой(текстбоксом/чекбоксом) будет менятся одна строка, посему массив вроде не нужен. Нашел методы StringReader и StringWriter, вроде то, что нужно.

Только я до сих пор не пойму как получить заданную строку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2014, 19:24
Помогаю со студенческими работами здесь

Изменение определённого значения параметра в INI-файле
Добрый день, помогите пожалуйста с батничком, очень надо, но не силен в них Есть файл sett.ini со следующей структурой: ...

Хранение и изменение пароля и даты в ini файле
Пароль и дата должны храниться в файле options.ini и передаваться в переменные char pas и TDate B в Edit3 меняется пароль и...

Изменение в .ini файле только некоторых строк
Есть у нас на рабочих машина .ini файл. Нужно изменить только некоторые строки. Остальные строки оставить такими какие они стоят. У...

Изменение значений в конфигурационном файле
Есть конфигурационный файл(другого приложения) В нем текст: Как изменять значения параметров?

Изменение значений параметров в файле настроек Firefox
Приветствую! Возможно уже где-то подобная проблема фигурировала, но я так и не нашел ответа на свой вопрос. Нужно в конторе на каждой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru