0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 22
.NET 4.x

Как осуществить запись пути который указывается через FolderBrowserDialog в .ini файл

04.12.2012, 09:38. Показов 2068. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи, прошу Вашей помощи в моем вопросе.
Возникла необходимость хранить настройки утилиты в .ini файле. Проведя некоторое время в поисках нашел отличный пример использования .ini файлов, а именно запись в определенную секцию определенного параметра и их дальнейшее считывание. Процесс описывается в видео + исходники.
Смотреть ролик

Теперь вопрос. Как осуществить запись пути который указывается через FolderBrowserDialog в .ini файл в секцию main, строку - path, а затем считать это значение и выполнить соответствующее действие.

В настоящий момент конфигурация записывается таким кодом:
VB.NET
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
Dim GamePath As String
        Dim SoursPath As String
        Dim FolderBrowserDialog1 As New FolderBrowserDialog()
        Dim Path As String
        SoursPath = My.Computer.FileSystem.CurrentDirectory
        FolderBrowserDialog1.Description = "Укажите путь к папке содержащей .exe файл"
        If My.Computer.FileSystem.FileExists("conf.ini") Then
            Path = My.Computer.FileSystem.ReadAllText("conf.ini")
            If Path = Nothing Then
                MsgBox("Файл конфигурации пуст")
                GoTo 6
            End If
            'MsgBox("Есть")
        Else
            MsgBox("утерян или поврежден файл конфигурации")
            My.Computer.FileSystem.WriteAllText("conf.ini", GamePath, False)
6:          If FolderBrowserDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK Then
                My.Computer.FileSystem.CurrentDirectory = FolderBrowserDialog1.SelectedPath
                If My.Computer.FileSystem.FileExists("1.exe") Or My.Computer.FileSystem.FileExists("2.exe") Or My.Computer.FileSystem.FileExists("3.exe") Then
                    Me.Show()
                    GamePath = FolderBrowserDialog1.SelectedPath
                    My.Computer.FileSystem.CurrentDirectory = SoursPath
                    My.Computer.FileSystem.WriteAllText("conf.ini", GamePath, False)
                    MsgBox("Конфигурация успешно обновлена")
                    Path = My.Computer.FileSystem.ReadAllText("conf.ini")
                    Application.Restart()
                Else
                    MsgBox("Указан неверный путь", MsgBoxStyle.Information)
                    GoTo 6
                End If
            End If
        End If
т.е. необходимо чтобы в файле conf.ini в секцию "main", строку "path" записался ключ (например, C:\test\) и затем при необходимости утилита могла бы обращаться к строке "path" и использовать записанный в ней ключ и использовать полученный путь в работе.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.12.2012, 09:38
Ответы с готовыми решениями:

Как произвести запись в ini-файл
Ребята как в Windows Forms записывать в ini файл

Как открыть ini-файл который будет расположен в посторонней папке?
Доброго времени суток! Как при запуске открыть ini-файл, который будет расположен в другом месте, например в "C:\Program...

Скопировать файл выбранный в ListBox в папку выбранную через FolderBrowserDialog
Короче есть список файлов в listbox1, как выбранный файл скопировать в выбранную папку в folderbrowserdialog? Есть какие то догадки методом...

3
35 / 35 / 1
Регистрация: 14.11.2012
Сообщений: 176
04.12.2012, 10:52
ваше видео посмотреть не могу на данный момент, вот пример работы с ini

VB.NET
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
    'Инициализация АПИ
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
 (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, _
 ByVal lpFileName As String) As Integer
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
 (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
 ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
    Public FileN As String = System.IO.Directory.GetCurrentDirectory & "\test3.ini"
    'WS - запись, RS - чтение
    Public Sub WS(ByVal Section As String, ByVal Obj As String, ByVal Param As String)
        Call WritePrivateProfileString(Section, Param, Obj, FileN)
    End Sub
    Public Function RS(ByVal Section As String, ByVal Param As String, ByVal Non As String) As String
        If System.IO.File.Exists(FileN) = False Then
            RS = Non
            Exit Function
        End If
        Dim rc As String = Strings.StrDup(255, vbNullChar)
        Dim x As Integer
        x = GetPrivateProfileString(Section, Param, Non, rc, 255, FileN)
        If x <> 0 Then rc = Strings.Left(rc, x)
        RS = rc
    End Function
 
    'пример использования
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'запись(секция, значение, имя переменной в ini)
        WS("INFO", Me.Top, "TOP")
        WS("INFO", Me.Left, "LEFT")
        WS("INFO", Me.Width, "WIDTH")
        WS("INFO", Me.Height, "HEIGHT")
        WS("OTHER", "User", "MyLogin")
        WS("OTHER", "123456", "MyPassword")
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        On Error Resume Next
        'чтение(секция, имя переменной в ini, значение по умолчанию если перем. в ini отсутствует)
        Me.Top = RS("INFO", "TOP", "400")
        Me.Left = RS("INFO", "LEFT", "200")
        Me.Width = RS("INFO", "WIDTH", "300")
        Me.Height = RS("INFO", "HEIGHT", "300")
        MsgBox("Hello, " & RS("OTHER", "MyLogin", "x"))
        MsgBox("Your password is " & RS("OTHER", "MyPassword", "1"))
    End Sub
Вложения
Тип файла: txt ini.txt (2.3 Кб, 29 просмотров)
1
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 22
05.12.2012, 04:59  [ТС]
спасибо! отличный пример, сделал что хотел

Добавлено через 29 минут
вопрос появился, как осуществить следующее:
нужна проверка, на присутствие в файле строки, если строка есть, то проверить наличие ключа и если строка или ключ отсутствует, то оповестить об этом
0
35 / 35 / 1
Регистрация: 14.11.2012
Сообщений: 176
05.12.2012, 10:19
VB.NET
1
2
x = RS("INFO", "TOP", "отсутствует")
If x = "отсутствует" Then MsgBox("переменная TOP в секции INFO отсутствует")
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2012, 10:19
Помогаю со студенческими работами здесь

Класс лог-файла, как лучше осуществить запись в файл
Здравствуйте! Хочу создать класс лог-файла с конструктором, в котором передаваемое значение - путь к файлу. Связь с файлом хотел сделать...

Как осуществить запись в файл bin и как прочитать всё, что в нём есть
Добрый день.Подскажите как осуществить запись в файл bin и как прочитать всё,что в нём есть.Заранее благодарен.

Локализовать приложение не через dll файл, а через обычный xml или ini файл
Добрый вечер дамы и господа, у меня возникла такой вопросик. Как можно локализовать приложение Windows Forms не через dll файл а через...

Бинарное дерево поиска. Как осуществить запись в файл и чтение из файла
Добрый день! Если кому не жаль своего времени окажите помощь! Необходимо осуществить запись в файл,просмотр содержимого файла, и создание...

Есть файл xml, который сохранен в ClientBin. Как добавлять запись в этот в файл
Доброго времени суток. Есть файл xml, который сохранен в ClientBin. Вопрос как добавлять запись в этот в файл? Например не в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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 —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru